# HG changeset patch # User Doug Simon # Date 1380104241 -7200 # Node ID 9c98944c040b2952cf282c5087858a0f3b0bf3f6 # Parent 106bd0ff2498b2e29625d53012c56b5cd628202c make GuardingPiNode canonicalize to a deopt when the guard is guaranteed to fail diff -r 106bd0ff2498 -r 9c98944c040b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Wed Sep 25 12:16:26 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Wed Sep 25 12:17:21 2013 +0200 @@ -94,8 +94,17 @@ @Override public ValueNode canonical(CanonicalizerTool tool) { + if (stamp() == StampFactory.illegal(object.kind())) { + // The condition always fails + return graph().add(new DeoptimizeNode(action, reason)); + } if (condition instanceof LogicConstantNode) { LogicConstantNode c = (LogicConstantNode) condition; + if (c.getValue() == negated) { + // The condition always fails + return graph().add(new DeoptimizeNode(action, reason)); + } + if (c.getValue() != negated && stamp().equals(object().stamp())) { return object; }