diff graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java @ 13367:413040ab993e

remove some usages of HashSet
author Bernhard Urban <bernhard.urban@jku.at>
date Tue, 17 Dec 2013 16:00:57 +0100
parents c258331fdde6
children fabf5447603e 80147dac0d6e
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java	Tue Dec 17 18:14:02 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java	Tue Dec 17 16:00:57 2013 +0100
@@ -87,17 +87,22 @@
             if (fixedNodeCount < TailDuplicationTrivialSize.getValue()) {
                 return true;
             }
-            HashSet<PhiNode> improvements = new HashSet<>();
+            ArrayList<PhiNode> improvements = null;
             for (PhiNode phi : merge.phis()) {
                 Stamp phiStamp = phi.stamp();
                 for (ValueNode input : phi.values()) {
                     if (!input.stamp().equals(phiStamp)) {
-                        improvements.add(phi);
+                        if (improvements == null) {
+                            improvements = new ArrayList<>();
+                        }
+                        if (!improvements.contains(phi)) {
+                            improvements.add(phi);
+                        }
                         break;
                     }
                 }
             }
-            if (improvements.isEmpty()) {
+            if (improvements == null) {
                 return false;
             }
             FixedNode current = merge;