changeset 21039:13a255e29236

Conditional Elimination: processCheckCast should return as soon as the checkcast has been transformed
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 15 Apr 2015 20:05:51 +0200
parents 6868faf48f02
children 12e94cba3696
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java	Sat Apr 18 19:56:22 2015 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java	Wed Apr 15 20:05:51 2015 +0200
@@ -211,7 +211,7 @@
             for (InfoElement infoElement : getInfoElements(node.object())) {
                 TriState result = node.tryFold(infoElement.getStamp());
                 if (result.isKnown()) {
-                    rewireGuards(infoElement.getGuard(), result.toBoolean(), (guard, checkCastResult) -> {
+                    if (rewireGuards(infoElement.getGuard(), result.toBoolean(), (guard, checkCastResult) -> {
                         if (checkCastResult) {
                             PiNode piNode = node.graph().unique(new PiNode(node.object(), node.stamp(), guard));
                             node.replaceAtUsages(piNode);
@@ -223,7 +223,9 @@
                             GraphUtil.killCFG(node);
                         }
                         return true;
-                    });
+                    })) {
+                        return;
+                    }
                 }
             }
         }