Literals.mesa
Copyright Ó 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved.
Satterthwaite, June 25, 1986 9:34:11 am PDT
Russ Atkinson (RRA) August 16, 1988 4:29:52 pm PDT
DIRECTORY
SmallCards,
Symbols USING [Type, UNSPEC],
Table USING [Base, Finger, IndexRep, Selector, Tag];
WordSequence: TYPE = RECORD [SEQUENCE COMPUTED CARDINAL OF Symbols.UNSPEC];
WordSequencePtr: TYPE = LONG POINTER TO WordSequence;
LTRecord:
TYPE =
MACHINE
DEPENDENT
RECORD [
link: LTIndex,
class: LitClass,
pad1: Card13 ¬ 0,
pad2: Card15 ¬ 0,
datum:
SELECT kind: *
FROM
short => [value: Symbols.
UNSPEC],
32 bits and less
long => [
bits: INT,
codeIndex: Card16,
value: SEQUENCE max: Card16 OF Symbols.UNSPEC]
ENDCASE];
LitClass:
TYPE =
MACHINE
DEPENDENT {
unknown (0), unsigned (1), signed (2), either (3), real (4), bits(5)
};
LTIndex:
TYPE = Base
RELATIVE
LONG
POINTER
TO LTRecord;
LTFirst: LTIndex = LOOPHOLE[Table.IndexRep[tag: ltTag, highBits:0, lowBits:0]];
LTLast: LTIndex = LOOPHOLE[Table.IndexRep[tag: ltTag]];
LTNull: LTIndex = LTLast;
LTId: TYPE = RECORD [baseP: Finger, index: LTIndex];
LitDescriptor:
TYPE =
RECORD [
bits: INT,
class: LitClass,
words: [0..1024],
offset: Base RELATIVE LONG POINTER TO WordSequence];
This type does not appear in files.
STRecord:
TYPE =
MACHINE
DEPENDENT
RECORD [
link: MSTIndex,
cases:
SELECT kind: *
FROM
master => [
local: BOOL,
pad1: Card13 ¬ 0,
codeIndex: Card16,
info: CARD,
length: Card16,
string: PACKED SEQUENCE maxLength: Card16 OF CHAR],
copy => [
mark: BOOL,
pad1: Card13 ¬ 0, pad2: Card16 ¬ 0],
heap => [
pad1: Card14 ¬ 0, pad2: Card16 ¬ 0,
type: Symbols.Type,
info: CARD]
ENDCASE];
STIndex:
TYPE = Base
RELATIVE
LONG
POINTER
TO STRecord;
STFirst: STIndex = LOOPHOLE[Table.IndexRep[tag: stTag, highBits:0, lowBits:0]];
STLast: STIndex = LOOPHOLE[Table.IndexRep[tag: stTag]];
STNull: STIndex = STLast;
MSTIndex: TYPE = Base RELATIVE LONG POINTER TO STRecord.master;