[ivy]<Satterthwaite>Mimosa>P3S.mesa!1

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
}.