12.07.2015 Views

Iterated Register Coalescing - School of Computer Science

Iterated Register Coalescing - School of Computer Science

Iterated Register Coalescing - School of Computer Science

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

322 · Lal George and Andrew Appelprocedure Combine(u,v)if v ∈ freezeWorklist thenfreezeWorklist := freezeWorklist \{v}elsespillWorklist := spillWorklist \{v}coalescedNodes := coalescedNodes ∪{v}alias[v] :=unodeMoves[u] := nodeMoves[u] ∪ nodeMoves[v]forall t ∈ Adjacent(v)AddEdge(t,u)DecrementDegree(t)if degree[u] ≥ K ∧ u ∈ freezeWorkListfreezeWorkList := freezeWorkList \{u}spillWorkList := spillWorkList ∪{u}Combineprocedure Freeze()let u ∈ freezeWorklistfreezeWorklist := freezeWorklist \{u}simplifyWorklist := simplifyWorklist ∪{u}FreezeMoves(u)FreezeProcedure Freeze pulls out a node from the freezeWorklist and freezes allmoves associated with this node. In principle, a heuristic could be used to selectthe freeze node. In our experience, freezes are not common, and a selection heuristicis unlikely to make a significant difference.procedure FreezeMoves(u)FreezeMovesforall m(= copy(u,v) or copy(v,u)) ∈ NodeMoves(u)if m ∈ activeMoves thenactiveMoves := activeMoves \{m}elseworklistMoves := worklistMoves \{m}frozenMoves := frozenMoves ∪{m}if NodeMoves(v) ={} ∧ degree[v]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!