-- CompilerServer.model
-- Copyright (c) 1986 by Xerox Corporation.  All rights reserved.
-- last edit by Satterthwaite, June 16, 1986 11:05:41 am PDT

LET @///SML/OSBasics.modelBcd!581021414 IN 
LET @///SML/CedarBasics.modelBcd!581021540 IN 
LET [
    ComputeServerServer: TYPE~
      @/Cedar/Cedar6.1/ComputeServerUser/ComputeServerServer.bcd!548206815, 
    ConvertUnsafe: TYPE~@/Cedar/Cedar6.1/Rope/ConvertUnsafe.bcd!541570785, 
    Loader: TYPE~@/Cedar/Cedar6.1/Loader/Loader.bcd!541582731, 
    ProcessorFace: TYPE~@/Cedar/Cedar6.1/Heads/ProcessorFace.bcd!541571125, 
    RuntimeError: TYPE~@/Cedar/Cedar6.1/MesaRuntime/RuntimeError.bcd!541570482, 
    TimeStamp: TYPE~@/Cedar/Cedar6.1/BasicLoadState/TimeStamp.bcd!541573143, 
    UnsafeStorage: TYPE~
      @/Cedar/Cedar6.1/SafeStorage/UnsafeStorage.bcd!541573222] IN 

LAMBDA [
    AsciiImpl: Ascii, 
    BasicsImpl: Basics, 
    BasicTimeImpl: BasicTime, 
    ComputeServerServerImpl: ComputeServerServer, 
    ConvertUnsafeImpl: ConvertUnsafe, 
    FileNamesImpl: FileNames, 
    FSImpl: FS, 
    IOImpl: IO, 
    LoaderImpl: Loader, 
    PrincOpsUtilsImpl: PrincOpsUtils, 
    ProcessImpl: Process, 
    ProcessorFaceImpl: ProcessorFace, 
    RefTextImpl: RefText, 
    RopeImpl: Rope, 
    RuntimeErrorImpl: RuntimeError, 
    UnsafeStorageImpl: UnsafeStorage, 
    VMImpl: VM] IN 
  
  REC [
    
    &options: STRING~"j-b-ns-w"; 
    
    -- these come from BasicLoadState.df
    Table: TYPE~@InternalTable.mesa!577304764*["s-z"]; 
    BcdDefs: TYPE~@InternalBcdDefs.mesa!564432582*["s-z"]; 
    Bcd:~@InternalBcdStuff.modelBcd!581022104; 
    SymbolCache:~@InternalSymbolCache.mesa!577305580; 
    
    -- this comes from AMTypes.df
    
    FileSegment: TYPE~Bcd.FileSegment*["s-z"]; 
    Symbols: TYPE~Bcd.Symbols*["s-z"]; 
    Literals: TYPE~Bcd.Literals*["s-z"]; 
    XTree: TYPE Tree~Bcd.Tree*["s-z"]; 
    Tree: TYPE~@InternalTree.mesa!579136501*[XTree:~XTree, &options:~"s-z"]; 
    XSymbolSegment: TYPE SymbolSegment~
      Bcd.SymbolSegment*[Tree:~XTree, &options:~"s-z"]; 
    SymbolSegment: TYPE~Bcd.SymbolSegment*[Tree:~Tree, &options:~"s-z"]; 
    PackageSymbols: TYPE~Bcd.PackageSymbols*["s-z"]; 
    Alloc: TYPE~Bcd.Alloc*["s-z"]; 
    SymbolOps: TYPE~Bcd.SymbolOps*["s-z"]; 
    RCMap: TYPE~Bcd.RCMap*["s-z"]; 
    RTBcd: TYPE~Bcd.RTBcd*["s-z"]; 
    
    [SymbolPack: TYPE, SymbolPackImplA: SymbolPack, SymbolOpsImpl1: SymbolOps]~
      Bcd.SymbolPack*[]*[]; 
    SymbolTable: TYPE~Bcd.SymbolTable*["s-z"]; 
    SymbolOpsImpl: SymbolOps~
      SymbolOpsImpl1 + Bcd.SymbolPackExt*[]*[own:~SymbolPackImplA]; 
    SymbolTableImpl: SymbolTable~
      REC [
        [SymbolPack: TYPE, SymbolPackImplB: SymbolPack]~Bcd.SymbolPack*[]*[]; 
        SymbolTableImpl: SymbolTable~SymbolCache*[]*[initial:~SymbolPackImplB]].SymbolTableImpl; 
    
    TreeOps: TYPE~@ProtoTreeOps.mesa!561064916*[]; 
    TreeOpsImpl: TreeOps~@TreePack.mesa!577228352*[]*[]; 
    
    LiteralOps: TYPE~@LiteralOps.mesa!542181991*[]; 
    LiteralOpsImpl: LiteralOps~@LiteralPack.mesa!581365296*[]*[]; 
    
    Types: TYPE~Bcd.Types*["s-z"]; 
    TypesImpl: Types~Bcd.TypePack*[]*[]; 
    
    XTreeOps: TYPE~@XTreeOps.mesa!560890077*[]; 
    XTreeOpsImpl: XTreeOps~@XTreePack.mesa!560891031*[]*[]; 
    
    SourceMap: TYPE~@SourceMap.mesa!560990724*[]; 
    
    FileParms: TYPE~@FileParms.mesa!542182141*["j-b-ns-z"]; 
    Copier: TYPE~@Copier.mesa!542182175*[]; 
    CopierImpl: Copier~
      @SymbolCopier.mesa!579138115*[]*[ownSymbols:~SymbolPackImplA] 
        + @FilePack.mesa!576616474*[]*[own:~SymbolPackImplA]; 
    
    [ComData: TYPE, dataPtr: ComData]~@ComData.mesa!577236175*[]*[]; 
    
    SymLiteralOps: TYPE~@SymLiteralOps.mesa!542182048*[]; 
    SymLiteralOpsImpl: SymLiteralOps~@SymLiteralPack.mesa!580755973*[]*[]; 
    
    Real: TYPE~@IeeeFloat.mesa!577235028*[]; 
    RealImpl: Real~@IeeePack.mesa!577235448*[]*[]; 
    
    CompilerOps: TYPE~@CompilerOps.mesa!542182211*["j-b-ns-z"]; 
    CompilerUtil: TYPE~@CompilerUtil.mesa!542182242*[]; 
    
    Log: TYPE~@Log.mesa!576616016*[]; 
    ErrorTable: TYPE~@ErrorTable.mesa!567375969*[]; 
    [LogImpl: Log, SourceMapImpl: SourceMap]~@LogPack.mesa!583173858*[]*[]; 
    
    Pass1: CompilerUtil~
      REC [
        ParseTable: TYPE~@ParseTable.mesa!580778425*[]; 
        P1: TYPE~@P1.mesa!569890987*[]; 
        [Control: CompilerUtil, Driver: P1]~@Pass1.mesa!581294997*[]*[]; 
        P1Impl: P1~
          Driver + @Scanner.mesa!580154837*[]*[] 
            + @ProtoParser.mesa!580755205*[]*[] + @Pass1T.mesa!580778384*[]*[]].Control; 
    
    Pass2: CompilerUtil~@Pass2.mesa!565053259*[]*[]; 
    
    Pass3: CompilerUtil~
      REC [
        A3: TYPE~@A3.mesa!577058476*[]; 
        P3: TYPE~@P3.mesa!576526077*[]; 
        P3S: TYPE~@P3S.mesa!576177918*[]; 
        A3Impl: A3~@Attr3a.mesa!577058465*[]*[] + @Attr3b.mesa!576450068*[]*[]; 
        [Pass3: TYPE, passPtr: Pass3, Control: CompilerUtil]~
          @Pass3.mesa!577235532*[]*[]; 
        Pass3B: P3~@Pass3B.mesa!576177528*[]*[]; 
        Pass3D: P3~@Pass3D.mesa!576534935*[]*[]; 
        Pass3I: P3~@Pass3I.mesa!583265350*[]*[]; 
        Pass3M: P3~@Pass3M.mesa!581639447*[]*[]; 
        [Pass3S: P3, P3SImpl1: P3S]~@Pass3S.mesa!580769538*[]*[]; 
        Pass3V: P3~@Pass3V.mesa!576639703*[]*[]; 
        [Pass3Xa: P3, P3SImpl2: P3S]~@Pass3Xa.mesa!577672678*[]*[]; 
        [Pass3Xb: P3, P3SImpl3: P3S]~@Pass3Xb.mesa!583183948*[]*[]; 
        Pass3Xc: P3~@Pass3Xc.mesa!577058433*[]*[]; 
        P3Impl: P3~
          Pass3B + Pass3D + Pass3I + Pass3M + Pass3S + Pass3V + Pass3Xa 
            + Pass3Xb + Pass3Xc; 
        P3SImpl: P3S~P3SImpl1 + P3SImpl2 + P3SImpl3].Control; 
    
    Pass3P: CompilerUtil~@Pass3P.mesa!577218281*[]*[]; 
    
    Pass4: CompilerUtil~
      LET [P4: TYPE~@P4.mesa!576785507*[]] IN 
      REC [
        [Pass4: TYPE, passPtr: Pass4, Control: CompilerUtil]~
          @Pass4.mesa!576713723*[]*[]; 
        P4Impl: P4~
          @Pass4B.mesa!580773923*[]*[] + @Pass4D.mesa!576783102*[]*[] 
            + @Pass4L.mesa!578513444*[]*[] + @Pass4S.mesa!576794244*[]*[] 
            + @Pass4Ops.mesa!581710170*[]*[] + @Pass4Xa.mesa!581710384*[]*[] 
            + @Pass4Xb.mesa!576785934*[]*[] + @Pass4Xc.mesa!576786302*[]*[]].Control; 
    
    Pass5: CompilerUtil~
      REC [
        MPtr: ComData~dataPtr; 
        
        -- architecture definitions
        RTSD: TYPE~Bcd.RTSD*[]; 
        
        CodeDefs: TYPE~@CodeDefs.mesa!580770865*[]; 
        P5: TYPE~@P5.mesa!565046992*[]; 
        P5L: TYPE~@P5L.mesa!542185580*[]; 
        P5S: TYPE~@P5S.mesa!542185615*[]; 
        P5U: TYPE~@P5U.mesa!577059242*[]; 
        Stack: TYPE~@Stack.mesa!542185707*[]; 
        Counting: TYPE~@Counting.mesa!565046095*[]; 
        
        FOpCodes: TYPE~@FOpCodes.mesa!542185412*[]; 
        OpCodeParams: TYPE~@OpCodeParams.mesa!542185453*[]; 
        OpTableDefs: TYPE~@OpTableDefs.mesa!542185486*[]; 
        
        [Code: TYPE, CPtr: Code, Control: CompilerUtil]~
          @Code.mesa!577307149*[]*[]; 
        P5UImpl: P5U~@CgenUtil.mesa!576540474*[]*[]; 
        [CodeDefsImpl2: CodeDefs, P5Impl1: P5]~@VarTemp.mesa!577237982*[]*[]; 
        [VarUtils: P5L, CodeDefsImpl3: CodeDefs]~@VarUtils.mesa!577308708*[]*[]; 
        [VarBasics: P5L, CodeDefsImpl4: CodeDefs]~
          @VarBasics.mesa!577308787*[]*[]; 
        [VarMove: P5L, CodeDefsImpl5: CodeDefs]~@VarMove.mesa!577308889*[]*[]; 
        P5LImpl: P5L~VarUtils + VarBasics + VarMove; 
        [P5Impl2: P5, P5SImpl1: P5S]~@Driver.mesa!580771230*[]*[]; 
        OpTableDefsImpl: OpTableDefs~@OpTable.mesa!542186487*[]*[]; 
        P5Impl3: P5~@FOpTable.mesa!542186453*[]*[]; 
        [CodeDefsImpl7: CodeDefs, P5SImpl2: P5S]~@Address.mesa!577237730*[]*[]; 
        StackImpl: Stack~@StackImpl.mesa!577672908*[]*[LCPtr:~CPtr]; 
        [CodeDefsImpl9: CodeDefs, P5Impl4: P5, P5SImpl3: P5S]~
          @Flow.mesa!577308564*[]*[]; 
        [CodeDefsImpl10: CodeDefs, P5Impl5: P5, P5SImpl4: P5S]~
          @Calls.mesa!575487067*[]*[]; 
        [CodeDefsImpl11: CodeDefs, P5Impl6: P5, P5SImpl5: P5S]~
          @Store.mesa!560985109*[]*[]; 
        [CountingImpl: Counting, CodeDefsImpl12: CodeDefs]~
          @CountingImpl.mesa!577235601*[]*[]; 
        [CodeDefsImpl13: CodeDefs, P5Impl7: P5]~
          @Constructor.mesa!582077422*[]*[]; 
        [CodeDefsImpl14: CodeDefs, P5Impl8: P5]~
          @Expression.mesa!580757361*[]*[]; 
        [CodeDefsImpl15: CodeDefs, P5Impl9: P5]~
          @FlowExpression.mesa!577308600*[]*[]; 
        [CodeDefsImpl16: CodeDefs, P5Impl10: P5]~
          @Statement.mesa!577237792*[]*[]; 
        [CodeDefsImpl17: CodeDefs, P5Impl11: P5]~
          @Selection.mesa!578876207*[]*[]; 
        [CodeDefsImpl18: CodeDefs, P5Impl12: P5]~@OutCode.mesa!577237857*[]*[]; 
        
        Final:~
          LET [
              P5F: TYPE~@P5F.mesa!580770888*[], 
              PeepholeDefs: TYPE~@PeepholeDefs.mesa!542185675*[]] IN 
          REC [
            
            Peephole:~
              REC [
                [CodeDefsImplP: CodeDefs, P5ImplQ: P5, PeepholeQ: PeepholeDefs]~
                  @PeepholeQ.mesa!542186569*[]*[]; 
                [P5ImplU: P5, PeepholeU: PeepholeDefs]~
                  @PeepholeU.mesa!577309267*[]*[]; 
                PeepholeZ: PeepholeDefs~@PeepholeZ.mesa!560985079*[]*[]; 
                PeepholeDefsImpl: PeepholeDefs~
                  PeepholeQ + PeepholeU + PeepholeZ; 
                P5ImplP: P5~P5ImplQ + P5ImplU]; 
            
            PeepholeDefsImpl: PeepholeDefs~Peephole.PeepholeDefsImpl; 
            [CodeDefsImplF0: CodeDefs, CrossJump: P5F]~
              @CrossJump.mesa!577673142*[]*[]; 
            [CodeDefsImplF1: CodeDefs, P5Impl13: P5, Final: P5F]~
              @Final.mesa!580774258*[]*[]; 
            P5FImpl: P5F~CrossJump + Final; 
            CodeDefsImplF: CodeDefs~
              Peephole.CodeDefsImplP + CodeDefsImplF0 + CodeDefsImplF1; 
            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~Bcd.TypeStrings*["s-z"]; 
        TypeStringsImpl: TypeStrings~Bcd.TypeStringsImpl*[]*[]; 
        RCMapOps: TYPE~Bcd.RCMapOps*["s-z"]; 
        RCMapOpsImpl: RCMapOps~Bcd.RCMapBuilderImpl*[]*[]; 
        ObjectOut: CompilerUtil~@ObjectOut.mesa!579138113*[]*[]].ObjectOut; 
    
    AllocImpl: Alloc~Bcd.AllocImpl*[]*[]; 
    CBinary: TYPE~Bcd.CBinary*[&options:~"s-z"]; 
    CBinaryImpl: CBinary~
      @MesaTab.bcd!580778423*[] + @ErrorTab.bcd!580778428*[] 
        + @DebugTab.bcd!580778430*[]; 
    CommandUtil: TYPE~@CommandUtil.mesa!542181810*[]; 
    CommandUtilImpl: CommandUtil~@CommandPack.mesa!542204761*[]*[]; 
    FileParmOps: TYPE~@FileParmOps.mesa!542182616*[]; 
    FileParmOpsImpl: FileParmOps~@FileParmPack.mesa!575338491*[]*[]; 
    DebugTable: TYPE~@DebugTable.mesa!542182360*[]; 
    Debug: CompilerUtil~@Debug.mesa!570472893*[]*[]; 
    
    OSMiscOps: TYPE~@OSMiscOps.mesa!563132423*[]; 
    OSMiscOpsImpl: OSMiscOps~@OSMiscOpsImpl.mesa!577672349*[]*[]; 
    
    [CompilerOpsImpl: CompilerOps, Sequencer: CompilerUtil]~
      @CompilerSequencer.mesa!575502346*[]*[ownSymbols:~SymbolPackImplA]; 
    
    CompilerUtilImpl: CompilerUtil~
      Pass1 + Pass2 + Pass3 + Pass3P + Pass4 + Pass5 + BcdOutput + Debug 
        + Sequencer; 
    
    Compiler: CONTROL~@CompilerServerCommandImpl.mesa!581540462*[]*[]].CompilerOpsImpl
