File information: | |
File name: | SymbolCache.mesa_Oct77.pdf [preview SymbolCache.mesa Oct77] |
Size: | 246 kB |
Extension: | |
Mfg: | xerox |
Model: | SymbolCache.mesa Oct77 🔎 |
Original: | SymbolCache.mesa Oct77 🔎 |
Descr: | xerox mesa 3.0_1977 listing SymbolCache.mesa_Oct77.pdf |
Group: | Electronics > Other |
Uploaded: | 11-03-2020 |
User: | Anonymous |
Multipart: | No multipart |
Information about the files in archive: | ||
Decompress result: | OK | |
Extracted files: | 1 | |
File name SymbolCache.mesa_Oct77.pdf symbolcache.mESA 24-0CT-77 10:55:07 Page 1 -- file SymbolCache.Mesa -- last modified by Satterthwaite on August 26, 1977 9:23 PM DIRECTORY AltoDefs: FROM "altodefs", ControlDefs: FROM "controldefs", SegmentDefs: fROM "segmentdefs", SymDefs: FROM "symdefs", SymbolTable: FROM "symboltable", TableDefs: FROM "tabledefs", SymbolTableDefs: FROM "symboltabledefs": DEFINITIONS FROM SymbolTableDefs: SymbolCache: PROGRAM IMPORTS sO: Symbol Table. sl: SymbolTable, s2: SymbolTable, s3: SymbolTable, SegmentDefs EXPORTS SymbolTableDefs SHARES ControlDefs, SymbolTableDefs = BEGIN OPEN SegmentDefs: -- public interface NoSymbolTable: PUBLIC SIGNAL [FileSegmentHandle] = CODE: TableForFrame: PUBLIC PROCEDURE [frame: ControlDefs.FrameHandle] RETURNS [SymbolTableHandle] BEGIN symbolseg: FileSegmentHandle = frame.accesslink.symbolsegment: IF symbolseg : NIL THEN ERROR NoSymbolTable[frame.accesslink.codesegment]: IF symbolseg.class # symbols THEN ERROR: RETURN [SymbolTableHandle[symbolseg]] END: TableForSegment: PUBLIC PROCEDURE [seg: FileSegmentHandle] RETURNS [SymbolTableHandle] BEGIN IF seg : NIL OR seg.class # symbols THEN ERROR NoSymbolTable[seg]: RETURN [SymbolTableHandle[seg]] END: SegmentForTable: PUBLIC PROCEDURE [table: SymbolTablefiandle] RETURNS [FileSegmentHandle] BEGIN RETURN [table.segment] END: TooManySymbolTables: PUBLIC SIGNAL [handle: SymbolTablefiandle] = CODE: SymbolBuffersFull: PUBLIC SIGNAL = CODE: IllegalSymbolBase: PUBLIC SIGNAL [base: SymbolTableBase] = CODE: AcquireSymbolTable: PUBLIC PROCEDURE [handle: SymbolTableHandle] RETURNS [base: SymbolTableBase] BEGIN i: STMapIndex; -- repeat on failure DO .. strover; DO IF stmap[i].stlink : NIL THEN BEGIN strover .. i: stmap[i].sllink .. MakeCacheEntry[handle]: base" slmap[i].slbase; InstallTable[base. stmap[i].stl ink.symheader]: RrTURN END: i .. IF joIAST[STMapIndex] TIIfN fIRST[STMapIndex] ELSE i+1: If I = strover TllfN EXIT: rNDIOOP: SIGNAl TooManySymbolTablos[handle]: fNOIOOP: fND: HpleaseSymbolTable: PUBLIC PROCfDURE [base: SymbolTabloBase] B[GIN i: SfMapIndex .. slrover: symbolcache.mESA 24-0CT-77 18:56:07 Page 2 DO IF stmap[1].stbase = base AND stmap[1].st11nk # NIL THEN BEGIN strover ~ 1; FreeCacheEntry[stmap[1].stlink]; stmap[i].st11nk ~ NIL: RETURN END; i ~ IF i=FIRST[STMapIndex] THEN LAST[STMapIndex] ELSE 1-1: IF 1 = strover THEN EXIT: ENDLOOP; SIGNAL IllegalSymbo18ase[base]; RETURN END; cachepagelimit: INTEGER ~ 0; SymbolCacheSize: PUBLI~ PROCEDURE RETURNS [pages: INTEGER] BEGIN pages ~ cachepagelimit; RETURN END; SetS |
Date | User | Rating | Comment |