Mercurial > hg > graal-compiler
changeset 23181:e7bb0c48b7a7
Remove unsafe handling of equivalent virtual object phis
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Mon, 14 Dec 2015 11:36:16 -0800 |
parents | ae1e007bbd2f |
children | 3fa761ac1fd9 |
files | graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java |
diffstat | 1 files changed, 1 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Mon Dec 14 18:41:57 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Mon Dec 14 11:36:16 2015 -0800 @@ -900,23 +900,7 @@ break; } } - if (compatible && hasIdentity) { - // we still need to check whether this value is referenced by any other phi - outer: for (PhiNode otherPhi : getPhis().filter(otherPhi -> otherPhi != phi)) { - for (int i = 0; i < states.length; i++) { - ValueNode alias = getAliasAndResolve(states[i], getPhiValueAt(otherPhi, i)); - if (alias instanceof VirtualObjectNode) { - VirtualObjectNode phiValueVirtual = (VirtualObjectNode) alias; - if (Arrays.asList(virtualObjs).contains(phiValueVirtual)) { - compatible = false; - break outer; - } - } - } - } - } - - if (compatible) { + if (compatible && !hasIdentity) { VirtualObjectNode virtual = getValueObjectVirtual(phi, virtualObjs[0]); mergeEffects.addFloatingNode(virtual, "valueObjectNode"); mergeEffects.deleteNode(phi);