changeset 14610:aef9e4224076

refactored state cleaning in PEA MergeProcessor
author Lukas Stadler <lukas.stadler@oracle.com>
date Wed, 19 Mar 2014 09:08:22 +0100
parents a65db4b0d185
children 1d853e629891 1617b1e25d31
files graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java
diffstat 1 files changed, 5 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Tue Mar 18 16:45:07 2014 -0700
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java	Wed Mar 19 09:08:22 2014 +0100
@@ -335,15 +335,6 @@
             ObjectState[] objStates = new ObjectState[states.size()];
             boolean materialized;
             do {
-                Iterator<Map.Entry<VirtualObjectNode, ObjectState>> iter = newState.objectStates.entrySet().iterator();
-                while (iter.hasNext()) {
-                    Map.Entry<VirtualObjectNode, ObjectState> entry = iter.next();
-                    if (!virtualObjTemp.contains(entry.getValue())) {
-                        iter.remove();
-                    }
-                }
-                mergeEffects.clear();
-                afterMergeEffects.clear();
                 materialized = false;
                 for (VirtualObjectNode object : virtualObjTemp) {
                     for (int i = 0; i < objStates.length; i++) {
@@ -389,6 +380,11 @@
                         materialized |= processPhi(phi, states, virtualObjTemp);
                     }
                 }
+                if (materialized) {
+                    newState.objectStates.clear();
+                    mergeEffects.clear();
+                    afterMergeEffects.clear();
+                }
             } while (materialized);
         }