changeset 22946:baf68ed1ccbc

PEA: reset aliases for phis
author Lukas Stadler <lukas.stadler@oracle.com>
date Wed, 04 Nov 2015 13:04:25 +0100
parents 249fe54d146a
children 76b25ae37990
files graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Nov 04 13:03:46 2015 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Nov 04 13:04:25 2015 +0100
@@ -414,6 +414,8 @@
                 if (alias instanceof VirtualObjectNode) {
                     VirtualObjectNode virtual = (VirtualObjectNode) alias;
                     addAndMarkAlias(virtual, phi);
+                } else {
+                    aliases.set(phi, null);
                 }
             }
         }
@@ -633,6 +635,7 @@
                 }
 
                 for (PhiNode phi : getPhis()) {
+                    aliases.set(phi, null);
                     if (hasVirtualInputs.isMarked(phi) && phi instanceof ValuePhiNode) {
                         materialized |= processPhi((ValuePhiNode) phi, states, virtualObjTemp);
                     }
@@ -850,7 +853,6 @@
          * @return true if materialization happened during the merge, false otherwise
          */
         private boolean processPhi(ValuePhiNode phi, PartialEscapeBlockState<?>[] states, int[] mergedVirtualObjects) {
-            aliases.set(phi, null);
 
             // determine how many inputs are virtual and if they're all the same virtual object
             int virtualInputs = 0;