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);