Mercurial > hg > graal-jvmci-8
changeset 5351:5698355398e3
Fix merge
Fix benign -esa problem around escape analysed peeling
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 03 May 2012 15:19:11 +0200 |
parents | de571c017f61 |
children | 4471a30a9728 |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/SuperBlock.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/EscapeAnalysisPhase.java |
diffstat | 2 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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<ValueNode> virtuals = vPhi.values(); - VirtualObjectNode vObject = virtualObject(virtuals.first()); + VirtualObjectNode vObject = virtualObject(GraphUtil.unProxify(virtuals.first())); List<ValueNode[]> virtualStates = new ArrayList<>(virtuals.size()); for (ValueNode virtual : virtuals) { virtualStates.add(virtualState(GraphUtil.unProxify(virtual)));
--- 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<ValueProxyNode> 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) {