src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.word/src/org/graalvm/compiler/word/WordOperationPlugin.java
changeset 48861 47f19ff9903c
parent 47667 390896759aa2
child 49873 26ebfe8ce852
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.word/src/org/graalvm/compiler/word/WordOperationPlugin.java	Fri Feb 02 10:37:48 2018 -0500
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.word/src/org/graalvm/compiler/word/WordOperationPlugin.java	Fri Feb 02 17:28:17 2018 -0800
@@ -31,7 +31,9 @@
 
 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
 import org.graalvm.compiler.bytecode.BridgeMethodUtils;
+import org.graalvm.compiler.core.common.calc.CanonicalCondition;
 import org.graalvm.compiler.core.common.calc.Condition;
+import org.graalvm.compiler.core.common.calc.Condition.CanonicalizedCondition;
 import org.graalvm.compiler.core.common.type.Stamp;
 import org.graalvm.compiler.core.common.type.StampFactory;
 import org.graalvm.compiler.core.common.type.StampPair;
@@ -409,31 +411,30 @@
     private ValueNode comparisonOp(GraphBuilderContext graph, Condition condition, ValueNode left, ValueNode right) {
         assert left.getStackKind() == wordKind && right.getStackKind() == wordKind;
 
-        // mirroring gets the condition into canonical form
-        boolean mirror = condition.canonicalMirror();
+        CanonicalizedCondition canonical = condition.canonicalize();
 
-        ValueNode a = mirror ? right : left;
-        ValueNode b = mirror ? left : right;
+        ValueNode a = canonical.mustMirror() ? right : left;
+        ValueNode b = canonical.mustMirror() ? left : right;
 
         CompareNode comparison;
-        if (condition == Condition.EQ || condition == Condition.NE) {
+        if (canonical.getCanonicalCondition() == CanonicalCondition.EQ) {
             comparison = new IntegerEqualsNode(a, b);
-        } else if (condition.isUnsigned()) {
+        } else if (canonical.getCanonicalCondition() == CanonicalCondition.BT) {
             comparison = new IntegerBelowNode(a, b);
         } else {
+            assert canonical.getCanonicalCondition() == CanonicalCondition.LT;
             comparison = new IntegerLessThanNode(a, b);
         }
 
         ConstantNode trueValue = graph.add(forInt(1));
         ConstantNode falseValue = graph.add(forInt(0));
 
-        if (condition.canonicalNegate()) {
+        if (canonical.mustNegate()) {
             ConstantNode temp = trueValue;
             trueValue = falseValue;
             falseValue = temp;
         }
-        ConditionalNode materialize = graph.add(new ConditionalNode(graph.add(comparison), trueValue, falseValue));
-        return materialize;
+        return graph.add(new ConditionalNode(graph.add(comparison), trueValue, falseValue));
     }
 
     protected ValueNode readOp(GraphBuilderContext b, JavaKind readKind, AddressNode address, LocationIdentity location, Opcode op) {