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.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/ra/ra.sml

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

revision 545, Thu Feb 24 13:56:44 2000 UTC revision 576, Fri Mar 10 07:27:16 2000 UTC
# Line 58  Line 58 
58     type raClient =     type raClient =
59     { cellkind     : C.cellkind,             (* kind of register *)     { cellkind     : C.cellkind,             (* kind of register *)
60       spillProh    : (C.cell * C.cell) list, (* don't spill these *)       spillProh    : (C.cell * C.cell) list, (* don't spill these *)
61         memRegs      : (C.cell * C.cell) list, (* memory registers *)
62       K            : int,                    (* number of colors *)       K            : int,                    (* number of colors *)
63       dedicated    : bool Array.array,       (* dedicated registers *)       dedicated    : bool Array.array,       (* dedicated registers *)
64       getreg       : getreg,                 (* how to find a color *)       getreg       : getreg,                 (* how to find a color *)
# Line 68  Line 69 
69       reload       : F.Spill.reload,         (* reload callback *)       reload       : F.Spill.reload,         (* reload callback *)
70       reloadDst    : F.Spill.reloadDst,      (* reload callback *)       reloadDst    : F.Spill.reloadDst,      (* reload callback *)
71       renameSrc    : F.Spill.renameSrc,      (* rename callback *)       renameSrc    : F.Spill.renameSrc,      (* rename callback *)
      firstMemReg  : C.cell,  
      numMemRegs   : int,  
72       mode         : mode                    (* mode *)       mode         : mode                    (* mode *)
73     }     }
74    
# Line 143  Line 142 
142         fun regalloc{getreg, K, dedicated, copyInstr,         fun regalloc{getreg, K, dedicated, copyInstr,
143                      spill, spillSrc, spillCopyTmp, renameSrc,                      spill, spillSrc, spillCopyTmp, renameSrc,
144                      reload, reloadDst, spillProh, cellkind, mode,                      reload, reloadDst, spillProh, cellkind, mode,
145                      firstMemReg, numMemRegs} =                      memRegs} =
146         let val numCell = C.numCell cellkind ()         let val numCell = C.numCell cellkind ()
147         in  if numCell = 0         in  if numCell = 0
148         then ()         then ()
# Line 171  Line 170 
170                                     mode=Word.orb(Flowgraph.mode,                                     mode=Word.orb(Flowgraph.mode,
171                                           Word.orb(mode,SpillHeuristics.mode)),                                           Word.orb(mode,SpillHeuristics.mode)),
172                                     spillLoc=spillLoc,                                     spillLoc=spillLoc,
173                                     firstMemReg=firstMemReg,                                     memRegs=memRegs
                                    numMemRegs=numMemRegs  
174                                    }                                    }
175             val G.GRAPH{spilledRegs, pseudoCount, spillFlag, ...} = G             val G.GRAPH{spilledRegs, pseudoCount, spillFlag, ...} = G
176    
# Line 350  Line 348 
348                           end                           end
349                     end                     end
350    
351                     (* simplify the nodes *)                     val {spills} =
352                           if K = 0 then
353                             {spills=spillWkl}
354                           else
355                             let (* simplify the nodes *)
356                     val stack = iterate                     val stack = iterate
357                            (simplifyWkl,moveWkl,freezeWkl,spillWkl,stack)                            (simplifyWkl,moveWkl,freezeWkl,spillWkl,stack)
358                     (* color the nodes *)                     (* color the nodes *)
359                     val {spills} = (Core.select G) {stack=stack}                           in  (Core.select G) {stack=stack}
360                             end
361                 in  (* check for actual spills *)                 in  (* check for actual spills *)
362                     case spills of                     case spills of
363                       [] => ()                       [] => ()

Legend:
Removed from v.545  
changed lines
  Added in v.576

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