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]; }. VP5.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Sweet, June 1, 1986 9:02:14 pm PDT Satterthwaite, November 26, 1985 1:29:52 pm PST Russ Atkinson (RRA) March 6, 1985 11:05:20 pm PST from FOpTable.mesa from Calls.mesa LogHeapFree: SIGNAL[calltree: Tree.Link] RETURNS[BOOL, Lexeme.se]; PRetLex: PROC[nrets: CARDINAL, node: Tree.Index, sig: BOOL_FALSE] RETURNS[Lexeme]; from Driver.mesa from Flow.mesa from Constructor.mesa from Store.mesa from Expression LPushLex: PROC[l: Lexeme] RETURNS[Lexeme]; PushLex: PROC[l: Lexeme]; from FlowExpression from Statement from Selection Κ;˜codešœ™Kšœ Οmœ1™˜LKšœ žœ'˜8KšœžœR˜_Kšœžœ˜K˜—šœž œ˜Kšžœ ˜$K˜Kšœ žœžœ˜.K˜šœ™KšΟnœžœ žœ ˜.KšŸ œžœ žœ ˜)KšŸ œžœ žœ ˜*K˜—šœ™šŸœžœ6žœ˜OKšžœ žœ˜—KšŸ œžœ˜KšŸœžœ)˜?Kšœ žœžœžœ ™BKš Ÿœžœžœžœžœžœ ™RšŸ œžœ6žœ˜NKšžœ žœ˜—KšŸœžœ˜KšŸœžœžœ˜)KšŸœžœžœ˜šŸœžœ˜ Kšœžœ$žœ˜SK˜——šœ™KšŸœžœžœ˜KšŸœžœžœ˜KšŸ œžœ#žœ˜8KšŸ œžœ˜!Kšœžœžœ˜@KšŸ œžœ˜2K˜—šœ™KšŸ œžœžœžœ˜OKšŸ œžœžœ˜+KšŸ œžœB˜QKšŸ œžœ˜ KšŸ œžœžœ˜/K˜—šœ™KšŸœžœ8žœ˜PKšŸ œžœ8žœ˜VKšŸœžœžœ˜/KšŸœžœžœ˜*KšŸœžœ8žœ˜TKšŸœžœ žœ žœ ˜XKšŸœžœ+žœ˜PK˜—šœ™KšŸ œžœE˜VKšŸœžœ˜KšŸœžœ˜"K˜—šœ™KšŸœžœžœ˜9KšŸ œžœžœ ˜1KšŸœžœžœžœ˜BKšŸœžœžœ˜2KšŸœžœ žœ ™*Kš Ÿ œžœžœžœžœ˜BKšŸ œžœ˜KšŸœžœ ™KšŸ œžœ˜#KšŸœžœ˜(KšŸœžœžœ˜)KšŸœžœ˜KšŸœžœžœ˜,KšŸœžœ'žœ ˜HK˜—šœ™KšŸœžœžœ ˜1K˜—šœ™KšŸ œžœžœ˜2KšŸ œžœ˜-KšŸ œžœ˜KšŸœžœ<˜JKšŸ œžœ˜1KšŸ œžœžœ˜0KšŸ œžœžœ˜2K˜—šœ™KšŸ œžœžœžœ˜CKšŸ œžœžœžœ˜CKšŸœžœ!˜/KšŸ œžœžœ˜0KšŸœžœžœ˜7KšŸœžœžœ˜8K˜K˜K˜———…—“