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-graph.sig
ViewVC logotype

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

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

revision 743, Thu Dec 7 15:31:24 2000 UTC revision 744, Fri Dec 8 04:11:42 2000 UTC
# Line 7  Line 7 
7  signature RA_GRAPH =  signature RA_GRAPH =
8  sig  sig
9    
10       structure C : CELLS_BASIS
11    
12    (*    (*
13     * The following are the data structures used in the register allocator.     * The following are the data structures used in the register allocator.
14     *)     *)
# Line 36  Line 38 
38     *)     *)
39    type programPoint = int    type programPoint = int
40    
41      (* Hash table indexed by program point *)
42      structure PPtHashTable : MONO_HASH_TABLE
43          where type Key.hash_key = programPoint
44    
45      type frame_offset = int
46      type logical_spill_id = int
47    
48      datatype spillLoc =
49         FRAME   of logical_spill_id  (* spill to a new frame location *)
50       | MEM_REG of C.cell            (* spill to a memory register *)
51    
52      (* Hash table indexed by spill location *)
53      structure SpillLocHashTable : MONO_HASH_TABLE
54          where type Key.hash_key = spillLoc
55    
56    type mode = word    type mode = word
57    
58    datatype interferenceGraph =    datatype interferenceGraph =
59       GRAPH of       GRAPH of
60       { bitMatrix    : bitMatrix ref,       { bitMatrix    : bitMatrix ref,
61         nodes        : node IntHashTable.hash_table,         nodes        : node IntHashTable.hash_table,
        regmap       : int IntHashTable.hash_table,  
62         K            : int,         K            : int,
63         firstPseudoR : int,         firstPseudoR : int,
64         dedicated    : bool Array.array,         dedicated    : bool Array.array,
# Line 54  Line 70 
70         (* Info to undo a spill when an optimistic spill has occurred *)         (* Info to undo a spill when an optimistic spill has occurred *)
71         spillFlag    : bool ref,         spillFlag    : bool ref,
72    
        (* registers that have been spilled*)  
73         spilledRegs  : bool IntHashTable.hash_table,         spilledRegs  : bool IntHashTable.hash_table,
74                               (*registers that have been spilled*)
75         trail        : trailInfo ref,         trail        : trailInfo ref,
76    
77         (* how to pretty print a register *)         (* how to pretty print a register *)
78         showReg      : int -> string,         showReg      : C.cell -> string,
79    
80         (* how many registers there are? *)         (* how many registers there are? *)
81         numRegs      : int,         numRegs      : int,
82         maxRegs      : unit -> int,         maxRegs      : unit -> int,
83    
84         (* dead copies *)         (* dead copies *)
85         deadCopies   : int list ref,         deadCopies   : C.cell list ref,
86         copyTmps     : node list ref,         copyTmps     : node list ref,
87         memMoves     : move list ref,         memMoves     : move list ref,
88         memRegs      : node list ref,         memRegs      : node list ref,
# Line 113  Line 128 
128        | REMOVED               (* removed from the interference graph *)        | REMOVED               (* removed from the interference graph *)
129        | ALIASED of node       (* coalesced *)        | ALIASED of node       (* coalesced *)
130        | COLORED of int        (* colored *)        | COLORED of int        (* colored *)
131        | MEMREG of int         (* register implemented in memory *)        | MEMREG of int * C.cell(* register implemented in memory *)
132        | SPILLED               (* spilled *)        | SPILLED               (* spilled *)
133        | SPILL_LOC of int      (* spilled at logical location *)        | SPILL_LOC of int      (* spilled at logical location *)
134    
# Line 126  Line 141 
141    
142    and node =    and node =
143      NODE of { number : int,             (* node number *)      NODE of { number : int,             (* node number *)
144                  cell:    C.cell,
145                movecnt: int ref,         (* #moves this node is involved in *)                movecnt: int ref,         (* #moves this node is involved in *)
146                movelist: move list ref,  (* moves associated with this node *)                movelist: move list ref,  (* moves associated with this node *)
147                degree : int ref,         (* current degree *)                degree : int ref,         (* current degree *)
# Line 145  Line 161 
161    
162    (* Create a new interference graph *)    (* Create a new interference graph *)
163    val newGraph : { nodes        : node IntHashTable.hash_table,    val newGraph : { nodes        : node IntHashTable.hash_table,
                    regmap       : int IntHashTable.hash_table,  
164                     numRegs      : int,                     numRegs      : int,
165                     maxRegs      : unit -> int,                     maxRegs      : unit -> int,
166                     K            : int,                     K            : int,
167                     firstPseudoR : int,                     firstPseudoR : int,
168                     dedicated    : bool Array.array,                     dedicated    : bool Array.array,
169                     showReg      : int -> string,                     showReg      : C.cell -> string,
170                     getreg       :                     getreg       :
171                       {pref:int list,stamp:int,proh:int Array.array} -> int,                       {pref:int list,stamp:int,proh:int Array.array} -> int,
172                     getpair      :                     getpair      :
# Line 159  Line 174 
174                     proh         : int Array.array,                     proh         : int Array.array,
175                     mode         : mode,                     mode         : mode,
176                     spillLoc     : int ref,                     spillLoc     : int ref,
177                     memRegs      : (int * int) list                     memRegs      : C.cell list
178                   } -> interferenceGraph                   } -> interferenceGraph
179    
180  end  end

Legend:
Removed from v.743  
changed lines
  Added in v.744

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