<> <> <> <> <<>> DIRECTORY TJaMBasic USING [Object, Tuple]; TJaMInternal: DEFINITIONS = { <> 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: TJaMBasic.Object]; NodeSequence: TYPE = RECORD[SEQUENCE size: CARDINAL OF NodeRecord]; TupleSequence: TYPE = RECORD[SEQUENCE COMPUTED CARDINAL OF TJaMBasic.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 TJaMOps curlen,maxlen: CARDINAL, array: LONG POINTER TO TupleSequence ]; }.