/* Little Smalltalk, version 2 Written by Tim Budd, Oregon State University, July 1987 */ /* constants and types used by process manager. See process.c and interp.c for more details. */ /* if there are no enumerated types, make tasks simply integer constants */ # ifdef NOENUMS # define taskType int # define sendMessageTask 1 # define sendSuperTask 2 # define ReturnTask 3 # define BlockReturnTask 4 # define BlockCreateTask 5 # define ContextExecuteTask 6 #endif # ifndef NOENUMS typedef enum {sendMessageTask, sendSuperTask, ReturnTask, BlockReturnTask, BlockCreateTask, ContextExecuteTask} taskType; # endif extern int finalStackTop; /* stack top when finished with interpreter */ extern int finalByteCounter; /* bytecode counter when finished with interpreter */ extern int argumentsOnStack; /* position of arguments on stack for mess send */ extern object messageToSend; /* message to send */ extern object returnedObject; /* object returned from message */ extern taskType finalTask; /* next task to do (see below) */ extern object creator; extern noreturn sendMessage(OBJ X OBJ X INT); extern noreturn prpush(OBJ); object returned from message */ taskType finalTask; /* next task to do (see below) */ object