<> <> <> <> <> DIRECTORY CodeDefs USING [Byte, CodeList, CompareClass, LabelInfoIndex, StoreOptions], IntCodeDefs USING [Label, Node, NodeList, OperRep, Var], Symbols USING [BTIndex, CBTIndex, CSEIndex, ContextLevel, ISEIndex, RecordSEIndex, WordLength], Tree USING [Index, Link]; P5: DEFINITIONS = { OPEN Symbols, IntCodeDefs, CodeDefs; CodeOper: TYPE = REF IntCodeDefs.OperRep.code; <> NumberOfParams: PROC[b: Byte] RETURNS[[0..3]]; PopEffect: PROC[b: Byte] RETURNS[[0..7]]; PushEffect: PROC[b: Byte] RETURNS[[0..3]]; <> BuildArgRecord: PROC[t: Tree.Link, rsei: RecordSEIndex, sigerr, isResume: BOOL] RETURNS[nparms: CARDINAL]; CallCatch: PROC[t: Tree.Link]; ConstructOnStack: PROC[maint: Tree.Link, rcsei: RecordSEIndex]; <> <> PushArgRecord: PROC[t: Tree.Link, rsei: RecordSEIndex, sigerr, isResume: BOOL] RETURNS[nparms: CARDINAL]; SysCall: PROC[alpha: Byte]; SysCallN: PROC[alpha: Byte, n: CARDINAL]; SysError: PROC RETURNS [Node]; ZoneOp: PROC[ zone: Tree.Link, procOffset: INT, args: NodeList, catch: Tree.Link] RETURNS [Node]; <> Module: PROC RETURNS [Node]; P5Error: PROC[n: CARDINAL]; PopInVals: PROC[irecord: RecordSEIndex, isenable: BOOL]; ReleaseLock: PROC [cl: CodeList]; visibleContext: ARRAY Symbols.ContextLevel OF IntCodeDefs.Label; FillProcLabel: PROC [op: CodeOper, bti: CBTIndex]; <> CompareFn: PROC[class: CompareClass, code: BOOL, length: [1..2]] RETURNS[Byte]; GetLabelMark: PROC RETURNS[LabelInfoIndex]; LabelList: PROC[cl: CodeList, t: Tree.Link, elabel: Label, mark: LabelInfoIndex]; LabelCreate: PROC[t: Tree.Link]; MakeExitLabel: PROC RETURNS[exit, loop: Label]; <> All: PROC[t: Tree.Link, node: Tree.Index, options: StoreOptions] RETURNS [Node]; Construct: PROC[t: Tree.Link, node: Tree.Index, options: StoreOptions] RETURNS [Node]; ListCons: PROC[node: Tree.Index] RETURNS[Node]; New: PROC[node: Tree.Index] RETURNS[Node]; RowCons: PROC[t: Tree.Link, node: Tree.Index, options: StoreOptions] RETURNS [Node]; TransferConstruct: PROC[nparms: CARDINAL, resident: BOOL, t: Tree.Link, tsei: CSEIndex]; VariantConstruct: PROC[t1, t2: Tree.Link, options: StoreOptions] RETURNS [Node]; <> ExtractFrom: PROC[cl: CodeList, t1: Tree.Link, tsei: RecordSEIndex, sourceNode: Node]; SAssign: PROC[sei: ISEIndex]; TTAssign: PROC[t1, t2: Tree.Link]; <> AdjustNilCheck: PROC[t: Tree.Link, wordOffset: CARDINAL]; VarForSei: PROC [sei: ISEIndex] RETURNS [l: Var]; ExpList: PROC [t: Tree.Link] RETURNS [head, tail: NodeList _ NIL]; Exp: PROC[t: Tree.Link] RETURNS[IntCodeDefs.Node]; <> MultiZero: PROC[t: Tree.Link, minWords: CARDINAL_3] RETURNS[BOOL]; PushConst: PROC[t: Tree.Link]; <> PushLProcDesc: PROC[bti: CBTIndex]; PushNestedProcDesc: PROC[bti: CBTIndex]; PushNonnestedProcDesc: PROC[n: CARDINAL]; PushRhs: PROC[t: Tree.Link]; Reloc: PROC[node: Tree.Index] RETURNS[Node]; StoreMod: PROC[t: Tree.Link, bSize: [0..WordLength)] RETURNS[Tree.Link]; <> FlowExp: PROC[node: Tree.Index] RETURNS[l: Node]; <> CatchPhrase: PROC[node: Tree.Index] RETURNS[Node]; EnterBlock: PROC[cl: CodeList, bti: BTIndex]; ExitBlock: PROC[bti: BTIndex]; DeclList: PROC [cl: CodeList, t: Tree.Link]; -- maybe some statements, too StatementList: PROC [cl: CodeList, t: Tree.Link]; StatementTree: PROC[t: Tree.Link] RETURNS[Node]; SCatchPhrase: PROC[node: Tree.Link] RETURNS[Node]; <> BindStmtExp: PROC[rootNode: Tree.Index, isExp: BOOL] RETURNS[Node]; CaseStmtExp: PROC[rootNode: Tree.Index, isExp: BOOL] RETURNS[Node]; CaseTest: PROC[t: Tree.Link, failLabel: Label]; NarrowExp: PROC[node: Tree.Index] RETURNS[Node]; GetCanonicalType: PROC[node: Tree.Index] RETURNS[Node]; TypeRel: PROC[node: Tree.Index, tf: BOOL, label: Label]; }.