P3S.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Satterthwaite, April 4, 1986 9:25:18 am PST
Russ Atkinson (RRA) March 6, 1985 10:15:45 pm PST
DIRECTORY
P3: TYPE USING [Attr, NPUse, Safety],
Symbols: TYPE USING [Type, 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: BOOL,  -- set for entry procedures
lockHeld: BOOL,  -- set for entry or internal procedures
noXfers: BOOL,  -- set by embedded xfer (except return)
reachable: BOOL,
labelList: Tree.Link,  -- list of accessible labels
loopDepth: CARDINAL,  -- depth of loop nesting
catchDepth: CARDINAL,  -- depth of catch phrase nesting
unwindEnabled: BOOL,  -- set iff in scope of unwind
resumeFlag: BOOL,   -- set iff a resume is legal
resumeRecord: RecordSEIndex]; -- for current catch phrase
ImplicitInfo: TYPE = RECORD [ -- info about subtree used as an expr
type: Type,
tree: Tree.Link,
attr: P3.Attr];
SelfInfo: TYPE = RECORD [ -- info about x in x.op[args] => op[x, args]
tree: Tree.Link,
type: Type,
attr: P3.Attr,
np: P3.NPUse];
exported by Pass3S
safety: READONLY P3.Safety;
currentBody: VAR BodyData;
currentScope: READONLY BTIndex;
exported by Pass3Xa
implicitRecord: VAR RecordSEIndex; -- type of extraction record
markCatch: VAR BOOL;   -- reset in Stmt, set in CatchPhrase
continued: VAR BOOL;
self: VAR SelfInfo;
exported by Pass3Xb
implicit: VAR ImplicitInfo; -- implied interpretation of Tree.Null
}.