[ivy]<Satterthwaite>CrossCompiler>tPackageSymbols.mesa!2

PackageSymbols.Mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Sweet, May 12, 1980 3:21 PM
Satterthwaite, December 4, 1985 9:47:05 am PST
Russ Atkinson (RRA) January 31, 1985 1:19:59 pm PST
DIRECTORY
PrincOps: TYPE USING [BytePC, EPRange, MaxNGfi],
Symbols: TYPE USING [Name],
SymbolSegment: TYPE USING [constType],
Table: TYPE USING [Limit, Selector];
PackageSymbols: DEFINITIONS = BEGIN
MaxEntries: CARDINAL = PrincOps.EPRange*PrincOps.MaxNGfi;
constant table declarations
WordIndex: TYPE = CARDINAL;
PCSeqBody: TYPE = RECORD[
SEQUENCE length: CARDINAL OF PrincOps.BytePC];
PCSeq: TYPE = LONG POINTER TO PCSeqBody;
JIData: TYPE = RECORD[pc: PrincOps.BytePC, tableSize: CARDINAL];
JISeqBody: TYPE = RECORD[
SEQUENCE length: CARDINAL OF JIData];
JISeq: TYPE = LONG POINTER TO JISeqBody;
ConstRecord: TYPE = RECORD[
offset: WordIndex,
length: CARDINAL];
ConstIndex: TYPE = CARDINAL [0..Table.Limit/ConstRecord.SIZE);
constType: Table.Selector = SymbolSegment.constType;
-- symbol table region contains:
-- count of ConstRecords
-- ConstRecords
-- PCSeqBody for LCO's
-- PCSeqBody for LIO's
-- JISeqBody for JIB's or JIW's (one table serves both)
body data for outer callable bodies
OuterPackRecord: TYPE = MACHINE DEPENDENT RECORD[
hti: Symbols.Name,
placed, resident: BOOL ← FALSE,
needsFixup: BOOL,
length: CARDINAL,
firstSon: IPIndex,
entryIndex: [0..MaxEntries]];
OPIndex: TYPE = CARDINAL [0..MaxEntries+2];
OPMain: OPIndex = 0;
OPCatch: OPIndex = MaxEntries;
OPEntry: OPIndex = MaxEntries+1;
OPNull: OPIndex = OPIndex.LAST;
body data for inner callable bodies
InnerPackRecord: TYPE = RECORD[
length: CARDINAL,
lastSon, needsFixup: BOOL,
entryIndex: [0..MaxEntries)];
IPIndex: TYPE = CARDINAL [0..MaxEntries]; -- waste a bit to get a null
IPNull: IPIndex = IPIndex.LAST;
END.