Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/branches/SMLNJ/src/compiler/CodeGen/main/mlriscGen.sml
ViewVC logotype

Diff of /sml/branches/SMLNJ/src/compiler/CodeGen/main/mlriscGen.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 468, Wed Nov 10 22:42:52 1999 UTC revision 469, Wed Nov 10 22:42:52 1999 UTC
# Line 20  Line 20 
20      structure C          : CPSREGS      structure C          : CPSREGS
21         where type T.Constant.const = SMLNJConstant.const         where type T.Constant.const = SMLNJConstant.const
22         where T.Region = CPSRegions         where T.Region = CPSRegions
        and T.BNames = FunctionNames  
23         and T.PseudoOp = PseudoOp         and T.PseudoOp = PseudoOp
24      structure InvokeGC   : INVOKE_GC      structure InvokeGC   : INVOKE_GC
25         where T = C.T         where T = C.T
# Line 63  Line 62 
62    val NONREF = SMLGCType.NONREF(ref CPS.INTt)    val NONREF = SMLGCType.NONREF(ref CPS.INTt)
63    val FLOAT  = SMLGCType.NONREF(ref CPS.FLTt)    val FLOAT  = SMLGCType.NONREF(ref CPS.FLTt)
64    val REF    = SMLGCType.REF(ref(CPS.PTRt(CPS.VPT)))    val REF    = SMLGCType.REF(ref(CPS.PTRt(CPS.VPT)))
65      val NO_OPT = [#create BasicAnnotations.NO_OPTIMIZATION ()]
66    
67    fun error msg = ErrorMsg.impossible ("MLRiscGen." ^ msg)    fun error msg = ErrorMsg.impossible ("MLRiscGen." ^ msg)
68    
# Line 112  Line 112 
112              alias,         (* generate register alias *)              alias,         (* generate register alias *)
113              defineLabel,   (* define a local label *)              defineLabel,   (* define a local label *)
114              entryLabel,    (* define an external entry *)              entryLabel,    (* define an external entry *)
             blockName,     (* set block name *)  
115              exitBlock,     (* mark the end of a procedure *)              exitBlock,     (* mark the end of a procedure *)
116              pseudoOp,      (* emit a pseudo op *)              pseudoOp,      (* emit a pseudo op *)
117              ... } =              ... } =
# Line 747  Line 746 
746                         updtHeapPtr(hp);                         updtHeapPtr(hp);
747                         callSetup(formals, args);                         callSetup(formals, args);
748                         defineLabel lab;                         defineLabel lab;
                        blockName f;  
749                         alignAllocptr f;                         alignAllocptr f;
750                         initialRegBindingsEscaping(vl, formals, tl);                         initialRegBindingsEscaping(vl, formals, tl);
751                         initTypBindings e;                         initTypBindings e;
# Line 765  Line 763 
763                         emit(branchToLabel(lab));                         emit(branchToLabel(lab));
764                          ***)                          ***)
765                         defineLabel lab;                         defineLabel lab;
                        blockName f;  
766                         InvokeGC.knwCheckLimit stream                         InvokeGC.knwCheckLimit stream
767                           {maxAlloc=4*maxAlloc f, regfmls=formals, regtys=tl,                           {maxAlloc=4*maxAlloc f, regfmls=formals, regtys=tl,
768                            return=branchToLabel(lab)};                            return=branchToLabel(lab)};
# Line 1286  Line 1283 
1283                    in func := NONE;                    in func := NONE;
1284                       pseudoOp PseudoOp.ALIGN4;                       pseudoOp PseudoOp.ALIGN4;
1285                       entryLabel lab;                       entryLabel lab;
                      blockName f;  
1286                       alignAllocptr f;                       alignAllocptr f;
1287                       emit(assign(C.baseptr, baseval));                       emit(assign(C.baseptr, baseval));
1288                       InvokeGC.stdCheckLimit stream                       InvokeGC.stdCheckLimit stream
# Line 1323  Line 1319 
1319            endCluster(            endCluster(
1320               if !gcsafety then               if !gcsafety then
1321                  let val gcmap = GCCells.getGCMap()                  let val gcmap = GCCells.getGCMap()
1322                  in  [SMLGCType.GCMAP gcmap,                  in  [#create SMLGCType.GCMAP gcmap,
1323                         #create
1324                       BasicAnnotations.REGINFO(SMLGCType.mapToString gcmap)                       BasicAnnotations.REGINFO(SMLGCType.mapToString gcmap)
1325                      ]                      ]
1326                  end                  end
# Line 1331  Line 1328 
1328            )            )
1329        end (* genCluster *)        end (* genCluster *)
1330    
1331        and emitMLRiscUnit f =        fun emitMLRiscUnit f =
1332            (Cells.reset();            (Cells.reset();
1333             beginCluster 0;             beginCluster 0;
1334             f stream;             f stream;
1335             endCluster [BasicAnnotations.NO_OPTIMIZATION]             endCluster NO_OPT
1336            )            )
1337    in  app mkGlobalTables funcs;    in  app mkGlobalTables funcs;
1338        app genCluster (Cluster.cluster funcs);        app genCluster (Cluster.cluster funcs);

Legend:
Removed from v.468  
changed lines
  Added in v.469

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0