-- Compiler.model -- last edited by Satterthwaite, August 15, 1983 12:48 pm LET @OSBasics.modelBcd IN LET [ Feedback: TYPE~@Feedback.bcd[], IO: TYPE~@IO.bcd[], KernelFile: TYPE~@KernelFile.bcd[], ProcessorFace: TYPE~@ProcessorFace.bcd[], TemporarySpecialExecOps: TYPE~@TemporarySpecialExecOps.bcd[] ] IN LAMBDA [ DirectoryImpl: Directory, ExecImpl: Exec, FileImpl: File, FileStreamImpl: FileStream, HeapImpl: Heap, InlineImpl: Inline, IOImpl: IO, KernelFileImpl: KernelFile, LongStringImpl: LongString, ProcessorFaceImpl: ProcessorFace, RuntimeImpl: Runtime, SpaceImpl: Space, StreamImpl: Stream, StringImpl: String, TimeImpl: Time, TTYImpl: TTY, VolumeImpl: Volume ] => [] IN REC [ &options: STRING~"j-b-n-cs"; Strings: TYPE~@LongStrings.mesa!2579451954*[]*[]; StringsImpl: Strings~NIL; Table: TYPE~@Table.mesa!2577115106*[]*[]; BcdDefs: TYPE~@BcdDefs.mesa!2565550795*[]*[]; BcdOps: TYPE~@BcdOps.mesa!2563405009*[]*[]; FileSegment: TYPE~@FileSegment.mesa!2550689766*[]*[]; Symbols: TYPE~@Symbols.mesa!2591895789*[]*[]; Literals: TYPE~@Literals.mesa!2591823743*[]*[]; Tree: TYPE~@Tree.mesa!2591824100*[]*[]; SymbolSegment: TYPE~@SymbolSegment.mesa!2591823663*[]*[]; PackageSymbols: TYPE~@PackageSymbols.mesa!2513695236*[]*[]; Alloc: TYPE~@Alloc.mesa!2585849506*[]*[]; SymbolOps: TYPE~@SymbolOps.mesa!2591827562*[]*[]; RCMap: TYPE~@RCMap.mesa!2542132963*[]*[]; RTBcd: TYPE~@RTBcd.mesa!2562263325*[]*[]; LiteralOps: TYPE~@LiteralOps.mesa!2591889369*[]*[]; TreeOps: TYPE~@ProtoTreeOps.mesa!2588520733*[]*[]; SymLiteralOps: TYPE~@SymLiteralOps.mesa!2596729968*[]*[]; OSMiscOps: TYPE~@OSMiscOps.mesa!2585846758*[]*[]; OSMiscOpsImpl: OSMiscOps~@OSMiscOpsImpl.mesa!2585847230*[]*[]; CharIO: TYPE~@CharIO.mesa!2585844909*[]*[]; CharIOImpl: CharIO~@CharIOImpl.mesa!2585845746*[]*[]; Real: TYPE~@IeeeFloat.mesa!2569172539*[]*[]; RealImpl: Real~@IeeePack.mesa!2569172695*[]*[]; AllocImpl: Alloc~@AllocImpl.mesa!2585851003*[]*[]; [SymbolPack: TYPE, SymbolPackImplA: SymbolPack, SymbolOpsImpl1: SymbolOps]~ @SymbolPack.mesa!2591827548*[]*[]; SymbolTable: TYPE~@SymbolTable.mesa!2568557625*[]*[]; SymbolOpsImpl: SymbolOps~ SymbolOpsImpl1 + @SymbolPackExt.mesa!2591828083*[]*[own~SymbolPackImplA]; SymbolTableImpl: SymbolTable~REC [ [SymbolPack: TYPE, SymbolPackImplB: SymbolPack]~@SymbolPack.mesa!2591827548*[]*[]; SymbolTableImpl: SymbolTable~@SymbolCache.mesa!2591914617*[]*[ initial~SymbolPackImplB] ].SymbolTableImpl; TreeOpsImpl: TreeOps~@TreePack.mesa!2588521035*[]*[]; LiteralOpsImpl: LiteralOps~@LiteralPack.mesa!2591892424*[]*[]; Types: TYPE~@Types.mesa!2557178921*[]*[]; TypesImpl: Types~@TypePack.mesa!2591830311*[]*[]; FileParms: TYPE~@FileParms.mesa!2563230620*[]*[]; Copier: TYPE~@Copier.mesa!2591889584*[]*[]; CopierImpl: Copier~ @SymbolCopier.mesa!2599061757*[]*[ownSymbols~SymbolPackImplA] + @FilePack.mesa!2591892428*[]*[own~SymbolPackImplA]; [ComData: TYPE, dataPtr: ComData]~@ComData.mesa!2601305731*[]*[]; SymLiteralOpsImpl: SymLiteralOps~@SymLiteralPack.mesa!2596742933*[]*[]; CompilerOps: TYPE~@CompilerOps.mesa!2601306490*[]*[]; CompilerUtil: TYPE~@CompilerUtil.mesa!2588518198*[]*[]; Log: TYPE~@Log.mesa!2591889518*[]*[]; ErrorTable: TYPE~@ErrorTable.mesa!2550173109*[]*[]; LogImpl: Log~@LogPack.mesa!2591831374*[]*[]; Pass1: CompilerUtil ~ REC [ ParseTable: TYPE~@ParseTable.mesa!2598192502*[]*[]; P1: TYPE~@P1.mesa!2591887183*[]*[]; [Control: CompilerUtil, Driver: P1]~@Pass1.mesa!2591887280*[]*[]; Scanner: P1~@Scanner.mesa!2598807614*[]*[]; Parser: P1~@ProtoParser.mesa!2588287864*[]*[]; TreeBuilder: P1~@Pass1T.mesa!2598192460*[]*[]; P1Impl: P1~Driver+Scanner+Parser+TreeBuilder].Control; Pass2: CompilerUtil~@Pass2.mesa!2592239378*[]*[]; Pass3: CompilerUtil ~ REC [ A3: TYPE~@A3.mesa!2594674509*[]*[]; P3: TYPE~@P3.mesa!2585847379*[]*[]; P3S: TYPE~@P3S.mesa!2585847462*[]*[]; A3Impl: A3~ @Attr3a.mesa!2594675060*[]*[] + @Attr3b.mesa!2588522281*[]*[]; [Pass3: TYPE, passPtr: Pass3, Control: CompilerUtil]~@Pass3.mesa!2596730423*[]*[]; Pass3B: P3~@Pass3B.mesa!2591830809*[]*[]; Pass3D: P3~@Pass3D.mesa!2598538635*[]*[]; Pass3I: P3~@Pass3I.mesa!2603838022*[]*[]; Pass3M: P3~@Pass3M.mesa!2598884473*[]*[]; [Pass3S: P3,P3SImpl1: P3S]~@Pass3S.mesa!2590691423*[]*[]; Pass3V: P3~@Pass3V.mesa!2593552472*[]*[]; [Pass3Xa: P3,P3SImpl2: P3S]~@Pass3Xa.mesa!2594674364*[]*[]; [Pass3Xb: P3,P3SImpl3: P3S]~@Pass3Xb.mesa!2593552410*[]*[]; Pass3Xc: P3~@Pass3Xc.mesa!2585778528*[]*[]; P3Impl: P3~Pass3B+Pass3D+Pass3I+Pass3M+Pass3S+Pass3V+Pass3Xa+Pass3Xb+Pass3Xc; P3SImpl: P3S~P3SImpl1+P3SImpl2+P3SImpl3].Control; Pass3P: CompilerUtil~@Pass3P.mesa!2602949868*[]*[]; Pass4: CompilerUtil ~ REC [ P4: TYPE~@P4.mesa!2603999609*[]*[]; [Pass4: TYPE, passPtr: Pass4, Control: CompilerUtil]~@Pass4.mesa!2582484186*[]*[]; P4Impl: P4~ @Pass4B.mesa!2601306169*[]*[] + @Pass4D.mesa!2601495131*[]*[] + @Pass4L.mesa!2592259771*[]*[] + @Pass4S.mesa!2598561226*[]*[] + @Pass4Ops.mesa!2598561397*[]*[] + @Pass4Xa.mesa!2603999452*[]*[] + @Pass4Xb.mesa!2603999678*[]*[] + @Pass4Xc.mesa!2600959998*[]*[]; ReplOps: TYPE~@ReplOps.mesa!2582486178*[]*[]; ReplOpsImpl: ReplOps~@ReplPack.mesa!2591830934*[]*[] ].Control; Pass5: CompilerUtil ~ REC [ MPtr: ComData~dataPtr; -- architecture definitions Mopcodes: TYPE~@Mopcodes.bcd!636766e29fc3[]; MiscAlpha: TYPE~@MiscAlpha.bcd!6365802eaa5f[]; SDDefs: TYPE~@SDDefs.bcd!63643b269e9f[]; RTSD: TYPE~@RTSD.mesa!2569873867*[]*[]; CodeDefs: TYPE~@CodeDefs.mesa!2584297921*[]*[]; P5: TYPE~@P5.mesa!2584400782*[]*[]; P5L: TYPE~@P5L.mesa!2569781625*[]*[]; P5S: TYPE~@P5S.mesa!2556124833*[]*[]; P5U: TYPE~@P5U.mesa!2584298094*[]*[]; Stack: TYPE~@Stack.mesa!2582582028*[]*[]; Counting: TYPE~@Counting.mesa!2590511737*[]*[]; FOpCodes: TYPE~@FOpCodes.mesa!2569173585*[]*[]; OpCodeParams: TYPE~@OpCodeParams.mesa!2533681227*[]*[]; OpTableDefs: TYPE~@OpTableDefs.mesa!2582580330*[]*[]; [Code: TYPE, CPtr: Code, Control: CompilerUtil]~@Code.mesa!2582580523*[]*[]; P5UImpl: P5U~@CgenUtil.mesa!2588523021*[]*[]; [CodeDefsImpl2: CodeDefs, P5Impl1: P5]~@Temp.mesa!2582583348*[]*[]; [VarUtils: P5L, CodeDefsImpl3: CodeDefs]~@VarUtils.mesa!2582581665*[]*[]; [VarBasics: P5L, CodeDefsImpl4: CodeDefs]~@VarBasics.mesa!2588523156*[]*[]; [VarMove: P5L, CodeDefsImpl5: CodeDefs]~@VarMove.mesa!2582583377*[]*[]; P5LImpl: P5L~VarBasics+VarMove+VarUtils; [P5Impl2: P5, P5SImpl1: P5S]~@Driver.mesa!2582581951*[]*[]; OpTableDefsImpl: OpTableDefs~@OpTable.mesa!2598476783*[]*[]; P5Impl3: P5~@FOpTable.mesa!2582582203*[]*[]; [CodeDefsImpl7: CodeDefs, P5SImpl2: P5S]~@Address.mesa!2584481069*[]*[]; StackImpl: Stack~@StackImpl.mesa!2591648263*[]*[LCPtr~CPtr]; [CodeDefsImpl9: CodeDefs, P5Impl4: P5, P5SImpl3: P5S]~@Flow.mesa!2588523288*[]*[]; [CodeDefsImpl10: CodeDefs, P5Impl5: P5, P5SImpl4: P5S]~@Calls.mesa!2594568816*[]*[]; [CodeDefsImpl11: CodeDefs, P5Impl6: P5, P5SImpl5: P5S]~@Store.mesa!2584401424*[]*[]; [CountingImpl: Counting,CodeDefsImpl12: CodeDefs]~@CountingImpl.mesa!2597694608* []*[]; [CodeDefsImpl13: CodeDefs,P5Impl7: P5]~@Constructor.mesa!2598459180*[]*[]; [CodeDefsImpl14: CodeDefs,P5Impl8: P5]~@Expression.mesa!2603054489*[]*[]; [CodeDefsImpl15: CodeDefs,P5Impl9: P5]~@FlowExpression.mesa!2582582187*[]*[]; [CodeDefsImpl16: CodeDefs,P5Impl10: P5]~@Statement.mesa!2588523795*[]*[]; [CodeDefsImpl17: CodeDefs,P5Impl11: P5]~@Selection.mesa!2588266494*[]*[]; [CodeDefsImpl18: CodeDefs,P5Impl12: P5]~@OutCode.mesa!2588525533*[]*[]; Final ~ REC [ P5F: TYPE~@P5F.mesa!2581270869*[]*[]; PeepholeDefs: TYPE~@PeepholeDefs.mesa!2581273018*[]*[]; Peephole ~ REC [ [CodeDefsImplP: CodeDefs,P5ImplQ: P5, PeepholeQ: PeepholeDefs]~ @PeepholeQ.mesa!2582582246*[]*[]; [P5ImplU: P5, PeepholeU: PeepholeDefs]~@PeepholeU.mesa!2582585920*[]*[]; PeepholeZ: PeepholeDefs~@PeepholeZ.mesa!2582586072*[]*[]; PeepholeDefsImpl: PeepholeDefs~PeepholeQ+PeepholeU+PeepholeZ; P5ImplP: P5~P5ImplQ+P5ImplU]; PeepholeDefsImpl: PeepholeDefs~Peephole.PeepholeDefsImpl; [CodeDefsImplF0: CodeDefs, DJumps: P5F]~@DJumps.mesa!2582581938*[]*[]; [CodeDefsImplF1: CodeDefs, CrossJump: P5F]~@CrossJump.mesa!2582580643*[]*[]; [CodeDefsImplF2: CodeDefs,P5Impl13: P5, Final: P5F]~@Final.mesa!2582581988*[]*[]; P5FImpl: P5F~DJumps+CrossJump+Final; CodeDefsImplF: CodeDefs~ Peephole.CodeDefsImplP+CodeDefsImplF0+CodeDefsImplF1+CodeDefsImplF2; P5ImplF: P5~Peephole.P5ImplP+P5Impl13]; CodeDefsImpl: CodeDefs~ CodeDefsImpl2+CodeDefsImpl3+CodeDefsImpl4+CodeDefsImpl5+CodeDefsImpl7+ CodeDefsImpl9+CodeDefsImpl10+CodeDefsImpl11+CodeDefsImpl12+CodeDefsImpl13+ CodeDefsImpl14+CodeDefsImpl15+CodeDefsImpl16+CodeDefsImpl17+CodeDefsImpl18+ Final.CodeDefsImplF; P5Impl: P5~P5Impl1+P5Impl2+P5Impl3+P5Impl4+P5Impl5+P5Impl6+P5Impl7+P5Impl8+ P5Impl9+P5Impl10+P5Impl11+P5Impl12+Final.P5ImplF; P5SImpl: P5S~P5SImpl1+P5SImpl2+P5SImpl3+P5SImpl4+P5SImpl5 ].Control; BcdOutput: CompilerUtil ~ REC [ TypeStrings: TYPE~@TypeStrings.mesa!2598552508*[]*[]; TypeStringsImpl: TypeStrings~@TypeStringsImpl.mesa!2598552680*[]*[]; RCMapOps: TYPE~@RCMapOps.mesa!2591914765*[]*[]; RCMapOpsImpl: RCMapOps~@RCMapBuilderImpl.mesa!2594744304*[]*[]; ObjectOut: CompilerUtil~@ObjectOut.mesa!2600962053*[]*[] ].ObjectOut; --CBinary: TYPE~@CBinary.mesa!2465269358*[]*[]; CBinary: TYPE~@CBinary.bcd[]; CBinaryImpl: CBinary ~ @MesaTab.bcd[]+@ErrorTab.bcd[]+ @DebugTab.bcd[]; CommandUtil: TYPE~@CommandUtil.mesa!2585845958*[]*[]; CommandUtilImpl: CommandUtil~@CommandPack.mesa!2585846832*[]*[]; FileParmOps: TYPE~@FileParmOps.mesa!2571775962*[]*[]; FileParmOpsImpl: FileParmOps~@FileParmPack.mesa!2585852895*[]*[]; [CompilerOpsImpl: CompilerOps, Sequencer: CompilerUtil]~ @Sequencer.mesa!2601415671*[]*[ownSymbols~SymbolPackImplA]; DebugTable: TYPE~@DebugTable.mesa!2550173137*[]*[]; Debug: CompilerUtil~@Debug.mesa!2594743918*[]*[]; CompilerUtilImpl: CompilerUtil~ Sequencer+Pass1+Pass2+Pass3+Pass3P+Pass4+Pass5+BcdOutput+Debug; [ExecOpsImpl: ExecOps, TemporarySpecialExecOpsImpl: TemporarySpecialExecOps]~ @Interface.mesa!2599085762*[]*[]; TestC: CONTROL~@TestCompilerImpl.mesa!2582044959*[]*[] ]