DIRECTORY Alloc USING [Notifier], MimosaCopier USING [SEToken], OSMiscOps USING [WordAnd], Symbols USING [BTIndex, Closure, CSEIndex, CTXIndex, HTIndex, IncludedCTXIndex, ISEIndex, MDIndex, RecordSEIndex, RefSEIndex, Type], Tree USING [Index, Link, Map, Scan]; MimP3: DEFINITIONS IMPORTS OSMiscOps = { OPEN Symbols; mark: BOOL = TRUE; -- mark in tree as set by pass 3 TextForm: TYPE = {text, rope, ropeText}; Attr: TYPE = MACHINE DEPENDENT RECORD [ noAssign: BOOL, noXfer: BOOL, const: BOOL, either: BOOL]; emptyAttr: Attr = [noAssign: FALSE, noXfer: FALSE, const: FALSE, either: FALSE]; fullAttr: Attr = [noAssign: TRUE, noXfer: TRUE, const: TRUE, either: TRUE]; voidAttr: Attr = [noAssign: TRUE, noXfer: TRUE, const: FALSE, either: FALSE]; And: PROC [a1: Attr, a2: Attr] RETURNS [Attr] = INLINE { RETURN [LOOPHOLE [OSMiscOps.WordAnd[LOOPHOLE[a1, WORD], LOOPHOLE[a2, WORD]]]]; }; Safety: TYPE = {none, asserted, checked}; NarrowOp: TYPE = RECORD [ error, indirect, rtTest, tagTest, computed, unImpl: BOOL ¬ FALSE]; lockNode: Tree.Index; -- lambda expr for monitor lock checkedANY: Symbols.CSEIndex; -- typeANY in CHECKED code NPUse: TYPE = {none, ref, set, refset, unsafe}; -- (name) param use NPMap: TYPE = ARRAY NPUse OF ARRAY NPUse OF NPUse; SetNP: ARRAY NPUse OF NPUse = [set, refset, set, refset, unsafe]; MergeNP: NPMap = [[ none, ref, set, refset, unsafe], [ ref, ref, unsafe, unsafe, unsafe], [ set, unsafe, set, unsafe, unsafe], [refset, unsafe, unsafe, unsafe, unsafe], [unsafe, unsafe, unsafe, unsafe, unsafe]]; SequenceNP: NPMap = [[ none, ref, set, refset, unsafe], [ ref, ref, refset, refset, unsafe], [ set, unsafe, set, unsafe, unsafe], [refset, unsafe, refset, unsafe, unsafe], [unsafe, unsafe, unsafe, unsafe, unsafe]]; BoundNP: NPMap = [[ none, ref, set, refset, unsafe], [ ref, ref, unsafe, refset, unsafe], [ set, unsafe, set, refset, unsafe], [refset, refset, refset, refset, unsafe], [unsafe, unsafe, unsafe, unsafe, unsafe]]; DeclNotify, MiscNotify, StmtNotify, VRNotify: Alloc.Notifier; ExpANotify, ExpCNotify: Alloc.Notifier; SetDefaultImport: PROC [iCtx: IncludedCTXIndex, implicitOK: BOOL¬FALSE]; DeclList: Tree.Scan; FirstId: PROC [Tree.Index] RETURNS [ISEIndex]; InitialExp: PROC [Tree.Link, Type] RETURNS [v: Tree.Link, extended: BOOL]; MakeLongType: PROC [Type, Type] RETURNS [Type]; MakeRefType: PROC [cType, hint: Type, bits: NAT, readOnly, counted, var: BOOL¬FALSE] RETURNS [RefSEIndex]; ResolveType: PROC [ISEIndex]; ResolveValue: PROC [ISEIndex]; TypeAppl: Tree.Map; TypeExp: Tree.Map; IdInit: PROC; IdReset: Tree.Scan; ArrangeKeys: PROC [expList: Tree.Link, nextKey: NextKeyProc, omittedValue: OmittedValueProc] RETURNS [CARDINAL]; NextKeyProc: TYPE = PROC RETURNS [HTIndex]; OmittedValueProc: TYPE = PROC RETURNS [Tree.Link]; BaseTree: PROC [Tree.Link, Type] RETURNS [Tree.Link]; BindTree: PROC [Tree.Link, PROC [ISEIndex] RETURNS [Tree.Link]] RETURNS [Tree.Link]; BumpCount: PROC [ISEIndex]; CheckDisjoint: PROC [ctx1, ctx2: CTXIndex]; ClearRefStack: PROC [uvCheck: BOOL ¬ TRUE]; CloseBase: PROC [Tree.Link, HTIndex]; ClusterId: PROC [HTIndex, CTXIndex] RETURNS [found: BOOL, sei: ISEIndex]; CompleteRecord: PROC [rSei: RecordSEIndex, depth: Closure¬$unit]; CopyTree: Tree.Map; EnterIdList: PROC [IncludedCTXIndex, Tree.Link]; EnterComposite: PROC [type: Type, t: Tree.Link, init: BOOL]; EnterType: PROC [type: Type, canonical: BOOL¬TRUE]; FieldId: PROC [HTIndex, RecordSEIndex] RETURNS [NAT, ISEIndex]; FindSe: PROC [HTIndex] RETURNS [symbol: ISEIndex, base: Tree.Link, indirect: BOOL]; Id: PROC [HTIndex] RETURNS [Tree.Link]; InterfaceId: PROC [HTIndex, CTXIndex] RETURNS [found: BOOL, sei: ISEIndex]; MainIncludedCtx: PROC [MDIndex] RETURNS [IncludedCTXIndex]; MakeIdTable: PROC [CARDINAL]; OpenBase: PROC [Tree.Link, HTIndex] RETURNS [Tree.Link]; OpenPointer: PROC [Tree.Link, Type] RETURNS [Tree.Link, CSEIndex]; PopCtx: PROC; PushCtx: PROC [CTXIndex]; PushHtCtx: PROC [HTIndex, Tree.Link, BOOL]; PushRecordCtx: PROC [RecordSEIndex, Tree.Link, BOOL]; RecordLhs: PROC [ISEIndex]; RecordMention: PROC [ISEIndex]; SealRefStack: PROC; SearchCtxList: PROC [HTIndex, CTXIndex] RETURNS [found: BOOL, sei: ISEIndex]; Shared: PROC [CTXIndex] RETURNS [BOOL]; TopCtx: PROC RETURNS [CTXIndex]; UnsealRefStack: PROC; UpdateTreeAttr: PROC [Tree.Link] RETURNS [attr: Attr]; CatchPhrase: PROC [Tree.Link] RETURNS [unwindCaught: BOOL]; Cons: PROC [Tree.Index, Type] RETURNS [Tree.Link]; CopyLock: PROC RETURNS [Tree.Link]; FindLockParams: PROC RETURNS [formal: ISEIndex, actual: ISEIndex]; InsertCatchLabel: SIGNAL [catchSeen: BOOL, exit: BOOL]; ItemType: PROC [Type] RETURNS [Type]; ListCons: PROC [Tree.Index, Type]; LockVar: PROC [Tree.Link] RETURNS [Tree.Link]; MakeFrameRecord: PROC [Tree.Link] RETURNS [CSEIndex]; MiscStmt: PROC [Tree.Index] RETURNS [Tree.Link]; MiscXfer: PROC [Tree.Index, Type] RETURNS [Tree.Link]; New: PROC [Tree.Index, Type]; TextRep: PROC [Type] RETURNS [TextForm]; XferForFrame: PROC [CTXIndex] RETURNS [CSEIndex]; pathNP: VAR NPUse; AssignDefaults: PROC [ctx: CTXIndex, copyable: BOOL ¬ FALSE] RETURNS [Tree.Link]; BodyList: PROC [firstBti: BTIndex]; BumpArgRefs: PROC [record: RecordSEIndex, write: BOOL]; Case: PROC [Tree.Index, Tree.Map]; CheckLocals: PROC [Tree.Link] RETURNS [localsOnly: BOOL]; SafetyAttr: PROC [Tree.Index] RETURNS [Safety]; SetSafety: PROC [Safety]; Scope: PROC [Tree.Index, Tree.Map]; Stmt: Tree.Map; DiscriminatedType: PROC [CSEIndex, Tree.Link] RETURNS [CSEIndex]; Discrimination: PROC [Tree.Index, Tree.Map]; Narrowing: PROC [type, target: Type] RETURNS [NarrowOp]; SelectVariantType: PROC [Type, HTIndex] RETURNS [ISEIndex]; SequenceField: PROC [RecordSEIndex] RETURNS [ISEIndex]; VariantUnionType: PROC [Type] RETURNS [CSEIndex]; phraseNP: VAR NPUse; All: PROC [node: Tree.Index, target: Type, init: BOOL¬FALSE]; Apply: PROC [Tree.Index, Type, BOOL] RETURNS [Tree.Index]; Assignment: PROC [Tree.Index]; CheckLength: PROC [Tree.Link, INTEGER]; CheckScope: PROC [Tree.Link, Type] RETURNS [Tree.Link]; Dot: PROC [Tree.Index, Type] RETURNS [Tree.Index]; Extract: PROC [Tree.Index]; FieldDefault: PROC [ISEIndex] RETURNS [Tree.Link]; FieldVoid: PROC [Tree.Link] RETURNS [Tree.Link]; Initialization: PROC [Tree.Link, Type] RETURNS [Tree.Link]; InterfaceCtx: PROC [CSEIndex, Tree.Link] RETURNS [CTXIndex]; KeyedList: PROC [Tree.Link] RETURNS [BOOL]; MatchFields: PROC [record: RecordSEIndex, expList: Tree.Link, init: BOOL¬FALSE, scopeCheck: BOOL¬TRUE] RETURNS [Tree.Link]; VoidComponent: PROC [Type]; ClearType: PROC [type: Type, normalize: BOOL ¬ TRUE] RETURNS [CSEIndex]; Exp: PROC [Tree.Link, Type] RETURNS [Tree.Link]; ForceType: PROC [Tree.Link, Type] RETURNS [Tree.Link]; Interval: PROC [Tree.Link, Type, BOOL]; RAttr: PROC RETURNS [Attr]; RAttrPop: PROC RETURNS [Attr]; Rhs: PROC [Tree.Link, Type] RETURNS [Tree.Link]; RPop: PROC; RPush: PROC [Type, Attr]; RType: PROC RETURNS [Type]; SetType: PROC [Type]; UType: PROC RETURNS [CSEIndex]; VoidExp: Tree.Map; AddrOp: PROC [Tree.Index, Type]; Range: PROC [Tree.Link, Type] RETURNS [Tree.Link]; Span: PROC [CSEIndex] RETURNS [first, last: MimosaCopier.SEToken]; }. D MimP3.mesa Copyright Σ 1985, 1986, 1987, 1990, 1991 by Xerox Corporation. All rights reserved. Satterthwaite, June 17, 1986 2:44:31 pm PDT Russ Atkinson (RRA) February 5, 1990 7:15:49 pm PST JKF August 15, 1988 1:39:44 pm PDT text literals attributes safety (Cedar) narrowing operations variables exported from Pass3B parameter use bookkeeping (for subst by name) notifiers exported by Pass3B exported by Pass3D exported by Pass3I exported by Pass3M exported by Pass3S exported by Pass3V exported by Pass3Xa exported by Pass3Xb RAttr followed by RPop exported by Pass3Xc Κ ’•NewlineDelimiter –(cedarcode) style™headšœ ™ Icodešœ ΟeœI™TLšΟy+™+L™3L™"—˜šΟk ˜ LšœŸœ ˜Lšœ Ÿœ ˜Lšœ Ÿœ ˜LšœŸœw˜„LšœŸœ˜$——šΟnœŸ ˜LšŸœ˜LšŸœ ˜ L˜LšœŸœŸœΟc ˜3—™ Lšœ Ÿœ˜(—™ šœŸœŸœ˜'Lšœ Ÿœ˜LšœŸœ˜ LšœŸœ˜ LšœŸœ˜L˜—Lš œŸœ Ÿœ Ÿœ Ÿœ˜PLš œŸœ Ÿœ Ÿœ Ÿœ˜KLš œŸœ Ÿœ Ÿœ Ÿœ˜ML˜š œŸœŸœ Ÿœ˜8Lš ŸœŸœŸœŸœŸœŸœ˜NLšœ˜——™LšœŸœ˜)—™šœ ŸœŸœ˜Lšœ4ŸœŸœ˜BL˜——™Lšœ‘˜6Lšœ‘˜8—™-LšœŸœ%‘˜CLš œŸœŸœŸœŸœŸœ˜2L˜LšœŸœŸœ,˜AL˜˜˜*L˜)L˜)L˜)L˜*L˜——˜˜*L˜)L˜)L˜)L˜*L˜——˜˜*L˜)L˜)L˜)L˜*L˜L˜———™ L˜=L˜'—™Lš œŸœ&Ÿ œ˜H—™Lš œ ˜Lš œŸœŸœ ˜.Lš  œŸœŸœŸœ˜JLš  œŸœŸœ˜/Lš   œŸœŸœŸ œŸœ˜jLš  œŸœ ˜Lš  œŸœ ˜Lš œ ˜Lš œ ˜—™Lš œŸœ˜ Lš œ ˜L˜š  œŸœKŸœŸœ˜pLšœ ŸœŸœŸœ ˜+LšœŸœŸœŸœ ˜2—Lš œŸœŸœ ˜5Lš  œŸœ Ÿœ ŸœŸœ ˜TLš  œŸœ ˜Lš  œŸœ˜+Lš  œŸœ ŸœŸœ˜+Lš  œŸœ˜%Lš  œŸœŸœ Ÿœ˜ILš œŸœ-˜ALš œ ˜Lš  œŸœ˜0Lš œŸœ"Ÿœ˜