
    <<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.


