Mercurial > hg > truffle
diff graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/EscapeAnalysisPhase.java @ 4614:a3882fd1ae61
Make it possible to have multiple LoopEnds per LoopBegin
Factor out the 2 versions of KillCFG (GraphUitl/Canonicalizer)
Remove unused loop detection code from FloatingReadPhase
Made InvokeNode's toString/getDebugProperties more robust
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 16 Feb 2012 11:57:38 +0100 |
parents | 539fca6a3b98 |
children | 9f781aae2470 |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/EscapeAnalysisPhase.java Wed Feb 15 20:09:25 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/EscapeAnalysisPhase.java Thu Feb 16 11:57:38 2012 +0100 @@ -189,15 +189,15 @@ } @Override - public void loopEnd(LoopEndNode x, BlockExitState loopEndState) { + public void loopEnds(LoopBeginNode loopBegin, Collection<BlockExitState> loopEndStates) { while (!(virtualObjectField instanceof PhiNode)) { virtualObjectField = ((VirtualObjectFieldNode) virtualObjectField).lastState(); } - ((PhiNode) virtualObjectField).addInput(loopEndState.virtualObjectField); - assert ((PhiNode) virtualObjectField).valueCount() == 2; - for (int i2 = 0; i2 < fieldState.length; i2++) { - ((PhiNode) fieldState[i2]).addInput(loopEndState.fieldState[i2]); - assert ((PhiNode) fieldState[i2]).valueCount() == 2; + for (BlockExitState loopEndState : loopEndStates) { + ((PhiNode) virtualObjectField).addInput(loopEndState.virtualObjectField); + for (int i2 = 0; i2 < fieldState.length; i2++) { + ((PhiNode) fieldState[i2]).addInput(loopEndState.fieldState[i2]); + } } }