# HG changeset patch # User Gilles Duboscq # Date 1429121151 -7200 # Node ID 13a255e292368a9a87b6f98d11880e47c7c15ce5 # Parent 6868faf48f023ed540909b7e97fc0409dc669ffc Conditional Elimination: processCheckCast should return as soon as the checkcast has been transformed diff -r 6868faf48f02 -r 13a255e29236 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DominatorConditionalEliminationPhase.java --- 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; + } } } }