-- file P3S.mesa -- last modified by Satterthwaite, 27-Apr-82 14:57:59 DIRECTORY P3: TYPE USING [Attr, NPUse, Safety], Symbols: TYPE USING [ CSEIndex, RecordSEIndex, CTXIndex, BTIndex, ContextLevel], Tree: TYPE USING [Index, Link]; P3S: DEFINITIONS = { OPEN Symbols; -- shared state variables for pass 3 BodyData: TYPE = RECORD[ -- shared communication record level: Symbols.ContextLevel, -- current level bodyNode: Tree.Index, -- current body argCtx: Symbols.CTXIndex, -- ctx for inputRecord inputRecord: RecordSEIndex, -- input record for current body returnRecord: RecordSEIndex, -- return record for current body entry: BOOLEAN, -- set for entry procedures lockHeld: BOOLEAN, -- set for entry or internal procedures noXfers: BOOLEAN, -- set by embedded xfer (except return) reachable: BOOLEAN, labelList: Tree.Link, -- list of accessible labels loopDepth: CARDINAL, -- depth of loop nesting catchDepth: CARDINAL, -- depth of catch phrase nesting unwindEnabled: BOOLEAN, -- set iff in scope of unwind resumeFlag: BOOLEAN, -- set iff a resume is legal resumeRecord: RecordSEIndex]; -- for current catch phrase ImplicitInfo: TYPE = RECORD [ -- info about subtree used as an expr type: CSEIndex, tree: Tree.Link, attr: P3.Attr]; SelfInfo: TYPE = RECORD [ -- info about x in x.op[args] => op[x, args] tree: Tree.Link, type: CSEIndex, attr: P3.Attr, np: P3.NPUse]; -- exported by Pass3S safety: READONLY P3.Safety; currentBody: BodyData; currentScope: READONLY BTIndex; -- exported by Pass3Xa implicitRecord: RecordSEIndex; -- type of extraction record markCatch: BOOLEAN; -- reset in Stmt, set in CatchPhrase continued: BOOLEAN; self: SelfInfo; -- exported by Pass3Xb implicit: ImplicitInfo; -- implied interpretation of Tree.Null }.