Mercurial > hg > truffle
changeset 11582:9e12e51fe7b2
Add helper methods with negations for inputs in LogicNode. Use helper method in CheckCastNode lowering
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 10 Sep 2013 16:13:35 +0200 |
parents | 454dc34d041c |
children | 69881bec003c |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java |
diffstat | 2 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java Tue Sep 10 14:32:04 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java Tue Sep 10 16:13:35 2013 +0200 @@ -32,12 +32,20 @@ } public static LogicNode and(LogicNode a, LogicNode b, double shortCircuitProbability) { + return and(a, false, b, false, shortCircuitProbability); + } + + public static LogicNode and(LogicNode a, boolean negateA, LogicNode b, boolean negateB, double shortCircuitProbability) { StructuredGraph graph = a.graph(); - ShortCircuitOrNode notAorNotB = graph.unique(new ShortCircuitOrNode(a, true, b, true, shortCircuitProbability)); + ShortCircuitOrNode notAorNotB = graph.unique(new ShortCircuitOrNode(a, !negateA, b, !negateB, shortCircuitProbability)); return graph.unique(new LogicNegationNode(notAorNotB)); } public static LogicNode or(LogicNode a, LogicNode b, double shortCircuitProbability) { - return a.graph().unique(new ShortCircuitOrNode(a, false, b, false, shortCircuitProbability)); + return or(a, false, b, false, shortCircuitProbability); + } + + public static LogicNode or(LogicNode a, boolean negateA, LogicNode b, boolean negateB, double shortCircuitProbability) { + return a.graph().unique(new ShortCircuitOrNode(a, negateA, b, negateB, shortCircuitProbability)); } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Tue Sep 10 14:32:04 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Tue Sep 10 16:13:35 2013 +0200 @@ -118,7 +118,7 @@ } else { // TODO (ds) replace with probability of null-seen when available double shortCircuitProbability = NOT_FREQUENT_PROBABILITY; - condition = graph().unique(new ShortCircuitOrNode(graph().unique(new IsNullNode(object)), false, typeTest, false, shortCircuitProbability)); + condition = LogicNode.or(graph().unique(new IsNullNode(object)), typeTest, shortCircuitProbability); } } GuardingPiNode checkedObject = graph().add(new GuardingPiNode(object, condition, false, forStoreCheck ? ArrayStoreException : ClassCastException, InvalidateReprofile, stamp));