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 733, Fri Nov 17 05:13:45 2000 UTC revision 744, Fri Dec 8 04:11:42 2000 UTC
# Line 7  Line 7 
7  sig  sig
8    
9     structure I : INSTRUCTIONS     structure I : INSTRUCTIONS
    structure C : CELLS  
10     structure G : RA_GRAPH = RAGraph     structure G : RA_GRAPH = RAGraph
11       structure C : CELLS
12        sharing I.C = C        sharing I.C = C
13    
14     type copyInstr =     type copyInstr =
# Line 21  Line 21 
21     type spill =     type spill =
22        {instr    : I.instruction,       (* instruction where spill is to occur *)        {instr    : I.instruction,       (* instruction where spill is to occur *)
23         reg      : C.cell,              (* register to spill *)         reg      : C.cell,              (* register to spill *)
24         spillLoc : int,                 (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
25         kill     : bool,                (* can we kill the current node? *)         kill     : bool,                (* can we kill the current node? *)
        regmap   : C.cell -> C.cell,    (* current register map *)  
26         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
27        } ->        } ->
28        {code     : I.instruction list,  (* instruction + spill code *)        {code     : I.instruction list,  (* instruction + spill code *)
# Line 37  Line 36 
36     type spillSrc =     type spillSrc =
37        {src      : C.cell,              (* register to spill from *)        {src      : C.cell,              (* register to spill from *)
38         reg      : C.cell,              (* the register *)         reg      : C.cell,              (* the register *)
39         spillLoc : int,                 (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
40         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
41        } -> I.instruction list          (* spill code *)        } -> I.instruction list          (* spill code *)
42    
# Line 46  Line 45 
45      *)      *)
46     type spillCopyTmp =     type spillCopyTmp =
47        {copy     : I.instruction,       (* copy to spill *)        {copy     : I.instruction,       (* copy to spill *)
48         spillLoc : int,                 (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
49         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
50        } -> I.instruction               (* spill code *)        } -> I.instruction               (* spill code *)
51    
# Line 57  Line 56 
56     type reload =     type reload =
57        {instr    : I.instruction,       (* instruction where spill is to occur *)        {instr    : I.instruction,       (* instruction where spill is to occur *)
58         reg      : C.cell,              (* register to spill *)         reg      : C.cell,              (* register to spill *)
59         spillLoc : int,                 (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
        regmap   : C.cell -> C.cell,    (* current register map *)  
60         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
61        } ->        } ->
62        {code     : I.instruction list,  (* instr + reload code *)        {code     : I.instruction list,  (* instr + reload code *)
# Line 72  Line 70 
70     type renameSrc =     type renameSrc =
71        {instr    : I.instruction,       (* instruction where spill is to occur *)        {instr    : I.instruction,       (* instruction where spill is to occur *)
72         fromSrc  : C.cell,              (* register to rename *)         fromSrc  : C.cell,              (* register to rename *)
73         toSrc    : C.cell,              (* register to rename to *)         toSrc    : C.cell               (* register to rename to *)
        regmap   : C.cell -> C.cell     (* current register map *)  
74        } ->        } ->
75        {code     : I.instruction list,  (* renamed instr *)        {code     : I.instruction list,  (* renamed instr *)
76         proh     : C.cell list,         (* prohibited from future spilling *)         proh     : C.cell list,         (* prohibited from future spilling *)
# Line 86  Line 83 
83     type reloadDst =     type reloadDst =
84        {dst      : C.cell,              (* register to reload to *)        {dst      : C.cell,              (* register to reload to *)
85         reg      : C.cell,              (* the register *)         reg      : C.cell,              (* the register *)
86         spillLoc : int,                 (* logical spill location *)         spillLoc : G.spillLoc,          (* logical spill location *)
87         annotations : Annotations.annotations ref (* annotations *)         annotations : Annotations.annotations ref (* annotations *)
88        } -> I.instruction list          (* reload code *)        } -> I.instruction list          (* reload code *)
89    
# Line 105  Line 102 
102            renameSrc    : renameSrc,            renameSrc    : renameSrc,
103            copyInstr    : copyInstr,            copyInstr    : copyInstr,
104            cellkind     : C.cellkind,            cellkind     : C.cellkind,
105            spillSet     : C.cell list IntHashTable.hash_table,            spillSet     : C.cell list G.PPtHashTable.hash_table,
106            reloadSet    : C.cell list IntHashTable.hash_table,            reloadSet    : C.cell list G.PPtHashTable.hash_table,
107            killSet      : C.cell list IntHashTable.hash_table            killSet      : C.cell list G.PPtHashTable.hash_table
108          } ->          } ->
109          { pt          : int,                         (* starting program pt *)          { pt          : G.programPoint,              (* starting program pt *)
110            annotations : Annotations.annotations ref, (* annotations *)            annotations : Annotations.annotations ref, (* annotations *)
111            instrs      : I.instruction list           (* instructions to spill *)            instrs      : I.instruction list           (* instructions to spill *)
112          } ->          } ->

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

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