Table.mesa
Copyright Ó 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved.
Satterthwaite, June 3, 1986 2:58:45 pm PDT
Russ Atkinson (RRA) August 18, 1988 12:47:18 pm PDT
Doug Wyatt, February 27, 1985 9:11:33 am PST
Table: DEFINITIONS = {
Base: TYPE = LONG ORDERED BASE POINTER;
Finger: TYPE = LONG POINTER TO Base;
Index: TYPE = Base RELATIVE LONG POINTER;
OrderedIndex: TYPE = Base RELATIVE LONG ORDERED POINTER;
representation of tagged pointers (for D-machines)
Tag: TYPE = BYTE;
HighBits: TYPE = BYTE;
LowBits: TYPE = CARD16;
tagBitLo: NAT = IF BITS[WORD] = 16 THEN 16 ELSE 0;
tagBitHi: NAT = tagBitLo+BITS[Tag]-1;
restBitLo: NAT = tagBitHi+1;
restBitHi: NAT = restBitLo+BITS[HighBits]-1;
lowBitLo: NAT = IF BITS[WORD] = 16 THEN 0 ELSE 16;
lowBitHi: NAT = lowBitLo+BITS[LowBits]-1;
IndexRep: TYPE = MACHINE DEPENDENT RECORD [
tag (0: tagBitLo..tagBitHi): Tag ¬ 0,
highBits (0: restBitLo..restBitHi): HighBits ¬ HighBits.LAST,
lowBits (0: lowBitLo..lowBitHi): LowBits ¬ LowBits.LAST];
IPointer: TYPE = LONG POINTER;
Selector: TYPE = NAT;
chunkType: Selector = Selector.FIRST;
}.