PCMaps: CEDAR DEFINITIONS ~ BEGIN Map: TYPE = LONG POINTER TO MapRep; BytePC: TYPE = LONG CARDINAL; -- SIM NewMap: PROC [maxPC: BytePC, nullVal: WORD] RETURNS [map: Map]; Lookup: PROC [map: Map, pc: BytePC] RETURNS [val: WORD]; Insert: PROC [map: Map, pc: BytePC, val: WORD]; MapRep: PRIVATE TYPE = MONITORED RECORD [ nEntries: CARD16, table: HighOrderTable, nullVal: WORD, ref: REF MapRep -- a self-reference to make it uncollectable ]; HighOrderTable: PRIVATE TYPE = LONG POINTER TO HighOrderTableRep; HighOrderTableRep: PRIVATE TYPE = RECORD [ s: SEQUENCE COMPUTED CARDINAL OF LowOrderTable ]; LowOrderTable: PRIVATE TYPE = LONG POINTER TO LowOrderTableRep; LowOrderTableRep: PRIVATE TYPE = RECORD [ maxEntries: CARD16, nEntries: CARD16, s: SEQUENCE COMPUTED CARDINAL OF MapEntry ]; MapEntry: TYPE = RECORD [ lowOrderPC: CARD16, value: WORD ]; END. vPCMaps.mesa Carl Hauser, May 13, 1987 6:01:45 pm PDT PCMaps map program counters to word values. They are a special-purpose dictionary taking advantage of the structure and organization of the space containing code in Cedar. The implementation is subject to violent change, but the interface should be reasonably static. BytePC: TYPE = WORD; -- RDI Private Stuff Κώ˜™ Icode™(—J™Iblock™L™K˜KšΠlnœΟkœž ˜šœž˜K˜Kš œžœžœžœžœ˜#K˜KšœžœžœžœΟc˜$KšœžœžœŸ™K˜K˜KšΟnœžœ žœ ˜?K˜Kš œžœžœžœ˜8K˜Kš œžœžœ˜/K˜—™ šœžœžœžœ˜)Kšœ žœ˜Kšœ˜Kšœ ž˜KšœžœŸ,˜