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/trunk/src/MLRISC/ra/ra-spill-with-renaming.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/ra/ra-spill-with-renaming.sml

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

revision 957, Thu Oct 11 15:47:53 2001 UTC revision 958, Fri Oct 12 03:54:43 2001 UTC
# Line 117  Line 117 
117    
118     fun error msg = MLRiscErrorMsg.error("RASpillWithRenaming",msg)     fun error msg = MLRiscErrorMsg.error("RASpillWithRenaming",msg)
119    
120     fun dec n = Word.toIntX(Word.fromInt n - 0w1)     fun dec1 n = Word.toIntX(Word.fromInt n - 0w1)
121       fun dec{block,insn} = {block=block,insn=dec1 insn}
122    
123     structure T = RASpillTypes(I)     structure T = RASpillTypes(I)
124     open T     open T
125    
126     fun uniq s = CBase.SortedCells.return(CBase.SortedCells.uniq s)     fun uniq s = CBase.SortedCells.return(CBase.SortedCells.uniq s)
127     val i2s    = Int.toString     val i2s    = Int.toString
128       fun pt2s{block,insn} = "b"^i2s block^":"^i2s insn
129    
130     val Asm.S.STREAM{emit, ...} = Asm.makeStream[]     val Asm.S.STREAM{emit, ...} = Asm.makeStream[]
131    
# Line 282  Line 284 
284                 | _  => (copyInstr((copyDst, copySrc), instr) @ reloadCode, env)                 | _  => (copyInstr((copyDst, copySrc), instr) @ reloadCode, env)
285             end             end
286    
287               fun diff({block=b1:int,insn=i1},{block=b2,insn=i2}) =
288                   if b1=b2 then i1-i2 else MAX_DIST+1
289    
290             (*             (*
291              * Insert reload code              * Insert reload code
292              *)              *)
# Line 295  Line 300 
300                            if CBase.sameColor(r,regToSpill) then                            if CBase.sameColor(r,regToSpill) then
301                              if defPt = pt                              if defPt = pt
302                              then lookup env(* this is NOT the right renaming!*)                              then lookup env(* this is NOT the right renaming!*)
303                              else if defPt - pt <= MAX_DIST then                              else if diff(defPt,pt) <= MAX_DIST then
304                                 renameInstr(pt,instr,regToSpill,env,currentReg)                                 renameInstr(pt,instr,regToSpill,env,currentReg)
305                              else                              else
306                                 reloadInstr(pt,instr,regToSpill,env,spillLoc)                                 reloadInstr(pt,instr,regToSpill,env,spillLoc)
# Line 534  Line 539 
539                                        env,don'tOverwrite)                                        env,don'tOverwrite)
540    
541                           val _ = if debug then                           val _ = if debug then
542                                 (print("pt="^i2s pt^"\n");                                 (print("pt="^pt2s pt^"\n");
543                                  case spillRegs of                                  case spillRegs of
544                                    [] => ()                                    [] => ()
545                                  |  _ => (print("Spilling ");                                  |  _ => (print("Spilling ");

Legend:
Removed from v.957  
changed lines
  Added in v.958

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