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

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

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

revision 815, Fri May 4 05:09:10 2001 UTC revision 889, Thu Jul 19 20:35:20 2001 UTC
# Line 11  Line 11 
11     structure C : CELLS     structure C : CELLS
12        sharing I.C = C        sharing I.C = C
13    
14       structure CB : CELLS_BASIS = CellsBasis
15     type copyInstr =     type copyInstr =
16            (C.cell list * C.cell list) * I.instruction -> I.instruction list            (CB.cell list * CB.cell list) * I.instruction -> I.instruction list
17    
18     (*     (*
19      * Spill the value associated with reg into spillLoc.      * Spill the value associated with reg into spillLoc.
# Line 20  Line 21 
21      *)      *)
22     type spill =     type spill =
23        {instr    : I.instruction,       (* instruction where spill is to occur *)        {instr    : I.instruction,       (* instruction where spill is to occur *)
24         reg      : C.cell,              (* register to spill *)         reg      : CB.cell,              (* register to spill *)
25         spillLoc : G.spillLoc,          (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
26         kill     : bool,                (* can we kill the current node? *)         kill     : bool,                (* can we kill the current node? *)
27         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
28        } ->        } ->
29        {code     : I.instruction list,  (* instruction + spill code *)        {code     : I.instruction list,  (* instruction + spill code *)
30         proh     : C.cell list,         (* prohibited from future spilling *)         proh     : CB.cell list,         (* prohibited from future spilling *)
31         newReg   : C.cell option        (* the spilled value is available here *)         newReg   : CB.cell option        (* the spilled value is available here *)
32        }        }
33    
34     (* Spill the register src into spillLoc.     (* Spill the register src into spillLoc.
35      * The value is originally from register reg.      * The value is originally from register reg.
36      *)      *)
37     type spillSrc =     type spillSrc =
38        {src      : C.cell,              (* register to spill from *)        {src      : CB.cell,              (* register to spill from *)
39         reg      : C.cell,              (* the register *)         reg      : CB.cell,              (* the register *)
40         spillLoc : G.spillLoc,          (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
41         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
42        } -> I.instruction list          (* spill code *)        } -> I.instruction list          (* spill code *)
# Line 45  Line 46 
46      *)      *)
47     type spillCopyTmp =     type spillCopyTmp =
48        {copy     : I.instruction,       (* copy to spill *)        {copy     : I.instruction,       (* copy to spill *)
49         reg      : C.cell,              (* the register *)         reg      : CB.cell,              (* the register *)
50         spillLoc : G.spillLoc,          (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
51         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
52        } -> I.instruction               (* spill code *)        } -> I.instruction               (* spill code *)
# Line 56  Line 57 
57      *)      *)
58     type reload =     type reload =
59        {instr    : I.instruction,       (* instruction where spill is to occur *)        {instr    : I.instruction,       (* instruction where spill is to occur *)
60         reg      : C.cell,              (* register to spill *)         reg      : CB.cell,              (* register to spill *)
61         spillLoc : G.spillLoc,          (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
62         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
63        } ->        } ->
64        {code     : I.instruction list,  (* instr + reload code *)        {code     : I.instruction list,  (* instr + reload code *)
65         proh     : C.cell list,         (* prohibited from future spilling *)         proh     : CB.cell list,         (* prohibited from future spilling *)
66         newReg   : C.cell option        (* the reloaded value is here *)         newReg   : CB.cell option        (* the reloaded value is here *)
67        }        }
68    
69     (*     (*
# Line 70  Line 71 
71      *)      *)
72     type renameSrc =     type renameSrc =
73        {instr    : I.instruction,       (* instruction where spill is to occur *)        {instr    : I.instruction,       (* instruction where spill is to occur *)
74         fromSrc  : C.cell,              (* register to rename *)         fromSrc  : CB.cell,              (* register to rename *)
75         toSrc    : C.cell               (* register to rename to *)         toSrc    : CB.cell               (* register to rename to *)
76        } ->        } ->
77        {code     : I.instruction list,  (* renamed instr *)        {code     : I.instruction list,  (* renamed instr *)
78         proh     : C.cell list,         (* prohibited from future spilling *)         proh     : CB.cell list,         (* prohibited from future spilling *)
79         newReg   : C.cell option        (* the renamed value is here *)         newReg   : CB.cell option        (* the renamed value is here *)
80        }        }
81    
82     (* Reload the register dst from spillLoc.     (* Reload the register dst from spillLoc.
83      * The value is originally from register reg.      * The value is originally from register reg.
84      *)      *)
85     type reloadDst =     type reloadDst =
86        {dst      : C.cell,              (* register to reload to *)        {dst      : CB.cell,              (* register to reload to *)
87         reg      : C.cell,              (* the register *)         reg      : CB.cell,              (* the register *)
88         spillLoc : G.spillLoc,          (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
89         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
90        } -> I.instruction list          (* reload code *)        } -> I.instruction list          (* reload code *)
# Line 102  Line 103 
103            reloadDst    : reloadDst,            reloadDst    : reloadDst,
104            renameSrc    : renameSrc,            renameSrc    : renameSrc,
105            copyInstr    : copyInstr,            copyInstr    : copyInstr,
106            cellkind     : C.cellkind,            cellkind     : CB.cellkind,
107            spillSet     : C.cell list G.PPtHashTable.hash_table,            spillSet     : CB.cell list G.PPtHashTable.hash_table,
108            reloadSet    : C.cell list G.PPtHashTable.hash_table,            reloadSet    : CB.cell list G.PPtHashTable.hash_table,
109            killSet      : C.cell list G.PPtHashTable.hash_table            killSet      : CB.cell list G.PPtHashTable.hash_table
110          } ->          } ->
111          { pt          : G.programPoint,              (* starting program pt *)          { pt          : G.programPoint,              (* starting program pt *)
112            annotations : Annotations.annotations ref, (* annotations *)            annotations : Annotations.annotations ref, (* annotations *)

Legend:
Removed from v.815  
changed lines
  Added in v.889

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