# HG changeset patch # User Lukas Stadler # Date 1395216502 -3600 # Node ID aef9e422407699c4a1521935f16184d86cc13519 # Parent a65db4b0d185cb8d4a2e5b4858ff38ba020fe6af refactored state cleaning in PEA MergeProcessor diff -r a65db4b0d185 -r aef9e4224076 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java --- 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> iter = newState.objectStates.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry 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); }