-- file P5U.mesa
-- last edited by Sweet, April 9, 1980  4:41 PM
-- last edited by Satterthwaite, 13-Jan-82  9:12:36

DIRECTORY
  Alloc: TYPE USING [Handle, Notifier],
  CodeDefs: TYPE USING [
    Byte, CCIndex, ChunkIndex, CodeCCIndex, CodeChunkType, JumpType, LabelCCIndex],
  PackageSymbols: TYPE USING [WordIndex],
  Symbols: TYPE USING [BitAddress, CSEIndex, CTXIndex, ISEIndex, RecordSEIndex, SEIndex],
  Tree: TYPE USING [Index, Link];

P5U: DEFINITIONS =
  BEGIN OPEN Symbols, CodeDefs;
  
  CgenUtilNotify: Alloc.Notifier;

  AllocCodeCCItem: PROC [n: [0..3]] RETURNS [c: CodeCCIndex];
  BitsForOperand: PROC [t: Tree.Link] RETURNS [CARDINAL];
  BitsForType: PROC [sei: SEIndex] RETURNS [CARDINAL];
  CCellAlloc: PROC [t: CodeChunkType];
  CgenUtilInit: PROC [ownTable: Alloc.Handle];
  ComputeFrameSize: PROC [fs: CARDINAL] RETURNS [CARDINAL];
  CreateLabel: PROC RETURNS [c: LabelCCIndex];
  DeleteCell: PROC [c: CCIndex];
  EnumerateCaseArms: PROC [node: Tree.Index, action: PROC [t: Tree.Link]];
  FieldAddress: PROC [sei: ISEIndex] RETURNS [BitAddress, CARDINAL];
  FreeChunk: PROC [i: CodeDefs.ChunkIndex, size: CARDINAL];
  FullWordBits: PROC [bits: CARDINAL] RETURNS [CARDINAL];
  GetChunk: PROC [size: CARDINAL] RETURNS [CodeDefs.ChunkIndex];
  InsertLabel: PROC [c: LabelCCIndex];
  LabelAlloc: PROC RETURNS [c: LabelCCIndex];
  LongTreeAddress: PROC [t: Tree.Link] RETURNS [long: BOOLEAN];
  MakeLongTreeLiteral: PROC [d: DESCRIPTOR FOR ARRAY OF WORD, type: CSEIndex] RETURNS [Tree.Link];
  MakeTreeLiteral: PROC [val: WORD] RETURNS [Tree.Link];
  MarkedType: PROC [SEIndex] RETURNS [CSEIndex];
  NextVar: PROC [sei: ISEIndex] RETURNS [ISEIndex];
  OperandType: PROC [t: Tree.Link] RETURNS [sei: CSEIndex];
  Out0: PROC [i: Byte];
  Out1: PROC [i: Byte, p1: WORD];
  Out2: PROC [i: Byte, p1, p2: WORD];
  Out3: PROC [i: Byte, p1, p2, p3: WORD];
  OutJump: PROC [jt: JumpType, l: LabelCCIndex];
  OutSource: PROC [index: CARDINAL];
  ParamCount: PROC [c: CodeCCIndex] RETURNS [CARDINAL];
  PrevVar: PROC [ssei, sei : ISEIndex] RETURNS [ISEIndex];
  PushLitVal: PROC [v: UNSPECIFIED];
  RecordConstant: PROC [offset: PackageSymbols.WordIndex, length: CARDINAL];
  ReferentType: PROC [type: SEIndex] RETURNS [SEIndex];
  TreeLiteral: PROC [t: Tree.Link] RETURNS [BOOLEAN];
  TreeLiteralValue: PROC [t: Tree.Link] RETURNS [WORD];
  TypeForTree: PROC [t: Tree.Link] RETURNS [SEIndex];
  VariantTag: PROC [type: SEIndex, ctx: CTXIndex] RETURNS [WORD];
  WordAligned: PROC [tsei: RecordSEIndex] RETURNS [BOOLEAN];
  WordsForOperand: PROC [t: Tree.Link] RETURNS [n: CARDINAL];
  WordsForSei: PROC [sei: SEIndex] RETURNS [CARDINAL];
  WordsForString: PROC [nChars: CARDINAL] RETURNS [CARDINAL];

  END.