<<>> <> <> <> <> <> DIRECTORY Alloc USING [Base, Notifier], IntCodeDefs USING [Label, Node, NodeList], SourceMap USING [Loc], Symbols USING [ContextLevel, CTXIndex, HTIndex, ISEIndex, RecordSEIndex, Type, UNSPEC], Target: TYPE MachineParms USING [bitsPerWord]; MimCode: DEFINITIONS = BEGIN OPEN IntCodeDefs, Symbols, Target; <> Info: TYPE = Symbols.UNSPEC; <> BitAddress: TYPE = INT; BitCount: TYPE = INT; BitIndex: TYPE = [0..bitsPerWord); firstMappedAddress: CARD = 8*1024; <> Base: TYPE = Alloc.Base; z: ZONE; <> CodeList: TYPE = REF CodeListRep; CodeListRep: TYPE = RECORD [head, tail: IntCodeDefs.NodeList ¬ NIL]; VLoc: TYPE = RECORD [disp: INT, size: BitCount]; <> LabelInfo: TYPE = REF LabelInfoRecord; labelInfoNull: LabelInfo = NIL; LabelInfoRecord: TYPE = RECORD [ free: BOOL ¬ FALSE, thread: LabelInfo, catchLevel: [0..37777b], body: SELECT tag: * FROM named => [hti: HTIndex, cci: IntCodeDefs.Label], loop => [exit, loop: IntCodeDefs.Label], stmt => [retry, continue: IntCodeDefs.Label] ENDCASE]; NamedLabelInfo: TYPE = REF LabelInfoRecord.named; StoreOptions: TYPE = MACHINE DEPENDENT RECORD [ expr: BOOL ¬ FALSE, init: BOOL ¬ FALSE, counted: BOOL ¬ FALSE, skipZeros: BOOL ¬ FALSE]; ConsDestination: TYPE = RECORD [ cl: CodeList ¬ NIL, destNode: IntCodeDefs.Node ¬ NIL, ignoreSafen: BOOL ¬ FALSE, options: StoreOptions ¬ []]; RegisterNotifier: PROC [notifier: Alloc.Notifier]; <> curctxlvl: Symbols.ContextLevel; bodyRetLabel, bodyComRetLabel: Label; bodyInRecord, bodyOutRecord: Symbols.RecordSEIndex; mainBody: BOOL; tailJumpOK: BOOL; caseCV: Node; caseType: Type; fileLoc, inlineFileLoc: SourceMap.Loc; catchcount: CARDINAL; catchoutrecord: Symbols.RecordSEIndex; tempcontext: Symbols.CTXIndex; xtracting: BOOL; xtractNode: Node; xtractsei: Symbols.ISEIndex; nC0, nC1: Node; <> trueNode, falseNode: Node; <> CodeNotImplemented: SIGNAL; CodePassInconsistency: SIGNAL; END.