-- file CompilerUtil.Mesa
-- last modified by Satterthwaite, January 10, 1983 8:49 am
DIRECTORY
Alloc: TYPE USING [Handle],
CompilerOps: TYPE USING [StreamId],
FileStream: TYPE USING [FileByteIndex],
Stream: TYPE USING [Handle],
Strings: TYPE USING [String],
Tree: TYPE USING [Link, Map, Scan];
CompilerUtil: DEFINITIONS = {
-- stream management
StreamId: TYPE = CompilerOps.StreamId;
AcquireStream: PROC [StreamId] RETURNS [Stream.Handle];
ReleaseStream: PROC [StreamId];
-- scratch zone management
AcquireZone: PROC RETURNS [UNCOUNTED ZONE];
ReleaseZone: PROC [UNCOUNTED ZONE] = INLINE {};
-- binary table management
TableId: TYPE = MACHINE DEPENDENT {error, debug, (255)};
AcquireTable: PROC [TableId] RETURNS [LONG POINTER];
ReleaseTable: PROC [TableId];
-- compiler passes
InstallParseTables: PROC [LONG POINTER];
PrefillSymbols: PROC;
P1Unit: PROC RETURNS [BOOL];
P2Unit: Tree.Map;
P3Unit: Tree.Map;
P3Postlude: PROC [expand: BOOL];
P4Unit: Tree.Scan;
P5module: PROC;
-- object output
Address: TYPE = LONG POINTER;
StartObjectFile: PROC [Stream.Handle, UNCOUNTED ZONE];
EndObjectFile: PROC [update: BOOL];
TableOut: PROC [Alloc.Handle];
RTTableOut: PROC [Alloc.Handle];
NextFilePage: PROC RETURNS [CARDINAL];
StartBCD: PROC;
ReadBCDOffset: PROC RETURNS [CARDINAL];
ReadBCDIndex: PROC RETURNS [FileStream.FileByteIndex];
AppendBCDWord: PROC [word: UNSPECIFIED];
AppendBCDWords: PROC [addr: Address, n: CARDINAL];
AppendBCDString: PROC [s: Strings.String];
FillBCDPage: PROC;
UpdateBCDWords: PROC [offset: CARDINAL, addr: Address, n: CARDINAL];
EndBCD: PROC;
-- debugging
PrintTree: PROC [table: Alloc.Handle, root: Tree.Link];
PrintBodies: PROC [table: Alloc.Handle];
PrintSymbols: PROC [table: Alloc.Handle, definitions: BOOL];
}.