-- JaMInternal.mesa -- Last edit by Doug Wyatt, 1-Oct-81 15:26:43 DIRECTORY JaMBasic USING [Object, Tuple]; JaMInternal: DEFINITIONS = { OPEN JaMBasic; -- Types Frame: TYPE = LONG POINTER TO FrameRecord; FrameRecord: TYPE = RECORD[ link: Frame, -- next frame in list of all frames opstk: Stack, -- operand stack execstk: Stack, -- execution stack dictstk: Stack, -- dictionary stack cache: Cache, -- dictionary cache locals: Locals, -- local variables abort: BOOLEAN, -- abort flag stepflag,astepflag: BOOLEAN -- single step flags ]; Stack: TYPE = LONG POINTER TO StackRecord; StackRecord: TYPE = RECORD[ head: Node, -- top of stack free: Node, -- top of free list nodes: LONG POINTER TO NodeSequence -- array of nodes ]; Node: TYPE = LONG POINTER TO NodeRecord; NodeRecord: TYPE = RECORD[next: Node, ob: Object]; NodeSequence: TYPE = RECORD[SEQUENCE size: CARDINAL OF NodeRecord]; TupleSequence: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF Tuple]; HashSequence: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF CARDINAL]; Cache: TYPE = LONG POINTER TO CacheRecord; CacheRecord: TYPE = RECORD [ curlen,maxlen,size: CARDINAL, hash: LONG POINTER TO HashSequence, table: LONG POINTER TO TupleSequence, clears, probes, hits: LONG INTEGER ]; Locals: TYPE = LONG POINTER TO LocalsRecord; LocalsRecord: TYPE = RECORD[ -- export to JaMOps curlen,maxlen: CARDINAL, array: LONG POINTER TO TupleSequence ]; }.