src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LogicNode.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LogicNode.java Thu May 31 10:14:41 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/LogicNode.java Thu May 31 10:38:05 2018 -0700
@@ -25,6 +25,7 @@
import static org.graalvm.compiler.nodeinfo.InputType.Condition;
import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_1;
+import jdk.vm.ci.meta.TriState;
import org.graalvm.compiler.core.common.type.StampFactory;
import org.graalvm.compiler.graph.Node.IndirectCanonicalization;
import org.graalvm.compiler.graph.NodeClass;
@@ -75,4 +76,19 @@
return false;
}
+
+ /**
+ * Determines what this condition implies about the other.
+ *
+ * <ul>
+ * <li>If negate(this, thisNegated) => other, returns {@link TriState#TRUE}</li>
+ * <li>If negate(this, thisNegated) => !other, returns {@link TriState#FALSE}</li>
+ * </ul>
+ *
+ * @param thisNegated whether this condition should be considered as false.
+ * @param other the other condition.
+ */
+ public TriState implies(boolean thisNegated, LogicNode other) {
+ return TriState.UNKNOWN;
+ }
}