TJaMInternal.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Last edit by Doug Wyatt, 1-Oct-81 15:26:43
Michael Plass, February 14, 1985 12:22:26 pm PST
DIRECTORY
TJaMBasic USING [Object, Tuple];
TJaMInternal: DEFINITIONS = {
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: 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
];
}.