# HG changeset patch # User Gilles Duboscq # Date 1336051151 -7200 # Node ID 5698355398e38939b00185de27f8e2e23e46352d # Parent de571c017f6162fa983b1cbf0add2c89d27ce0b1 Fix merge Fix benign -esa problem around escape analysed peeling diff -r de571c017f61 -r 5698355398e3 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java Thu May 03 11:05:46 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java Thu May 03 15:19:11 2012 +0200 @@ -255,7 +255,7 @@ PhiNode vPhi, MergeNode merge) { NodeInputList virtuals = vPhi.values(); - VirtualObjectNode vObject = virtualObject(virtuals.first()); + VirtualObjectNode vObject = virtualObject(GraphUtil.unProxify(virtuals.first())); List virtualStates = new ArrayList<>(virtuals.size()); for (ValueNode virtual : virtuals) { virtualStates.add(virtualState(GraphUtil.unProxify(virtual))); diff -r de571c017f61 -r 5698355398e3 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java Thu May 03 11:05:46 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java Thu May 03 15:19:11 2012 +0200 @@ -188,9 +188,12 @@ FixedNode next = node.next(); graph.removeFixed(node); - for (ValueProxyNode vpn : virtual.usages().filter(ValueProxyNode.class).snapshot()) { - assert vpn.value() == virtual; - graph.replaceFloating(vpn, virtual); + List proxies; + while (!(proxies = virtual.usages().filter(ValueProxyNode.class).snapshot()).isEmpty()) { + for (ValueProxyNode vpn : proxies) { + assert vpn.value() == virtual; + graph.replaceFloating(vpn, virtual); + } } if (virtual.fieldsCount() > 0) {