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 /MLRISC/trunk/ra/ra.sig
ViewVC logotype

Diff of /MLRISC/trunk/ra/ra.sig

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

revision 475, Wed Nov 10 22:59:58 1999 UTC revision 498, Tue Dec 7 15:44:50 1999 UTC
# Line 12  Line 12 
12        sharing F.I = I        sharing F.I = I
13        sharing I.C = C        sharing I.C = C
14    
    datatype mode = REGISTER_ALLOCATION | COPY_PROPAGATION  
   
    datatype optimization = DEAD_COPY_ELIM  
                          | SPILL_PROPAGATION  
                          | SPILL_COALESCING  
                          | SPILL_COLORING  
                          | BIASED_SELECTION  
   
15     type getreg = { pref  : C.cell list,     type getreg = { pref  : C.cell list,
16                     stamp : int,                     stamp : int,
17                     proh  : int Array.array                     proh  : int Array.array
18                   } -> C.cell                   } -> C.cell
19    
20       type mode = word
21    
22       (*
23        * Optimizations
24        *)
25       val NO_OPTIMIZATION   : mode
26       val DEAD_COPY_ELIM    : mode
27       val BIASED_SELECTION  : mode
28       val SPILL_COLORING    : mode
29       val SPILL_COALESCING  : mode
30       val SPILL_PROPAGATION : mode
31       val COPY_PROPAGATION  : mode
32    
33     (*     (*
34      * Perform register allocation.      * Perform register allocation.
35      *      *
36      * spillProh is a list of register ranges (inclusive) that cannot be spilled.      * spillProh is a list of register ranges (inclusive) that cannot be spilled.
37      *      *
38      *)      *)
39     val ra : mode ->     type raClient =
40              { cellkind     : C.cellkind,             (* kind of register *)              { cellkind     : C.cellkind,             (* kind of register *)
41                spillProh    : (C.cell * C.cell) list, (* don't spill these *)                spillProh    : (C.cell * C.cell) list, (* don't spill these *)
42                K            : int,                    (* number of colors *)                K            : int,                    (* number of colors *)
43                dedicated    : bool Array.array,       (* dedicated registers *)                dedicated    : bool Array.array,       (* dedicated registers *)
44         firstMemReg  : C.cell,                 (* first memory registers *)
45         numMemRegs   : int,                    (* number of memory registers *)
46                getreg       : getreg,                 (* how to find a color *)                getreg       : getreg,                 (* how to find a color *)
47                copyInstr    : F.Spill.copyInstr,      (* how to make a copy *)                copyInstr    : F.Spill.copyInstr,      (* how to make a copy *)
48                spill        : F.Spill.spill,          (* spill callback *)                spill        : F.Spill.spill,          (* spill callback *)
49         spillSrc     : F.Spill.spillSrc,       (* spill callback *)
50         spillCopyTmp : F.Spill.spillCopyTmp,   (* spill callback *)
51                reload       : F.Spill.reload,         (* reload callback *)                reload       : F.Spill.reload,         (* reload callback *)
52                optimizations: optimization list       (* optimizations *)       reloadDst    : F.Spill.reloadDst,      (* reload callback *)
53              } list -> F.flowgraph -> F.flowgraph       renameSrc    : F.Spill.renameSrc,      (* rename callback *)
54         mode         : mode                    (* mode *)
55       }
56    
57       val ra : raClient list -> F.flowgraph -> F.flowgraph
58    
59  end  end

Legend:
Removed from v.475  
changed lines
  Added in v.498

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