< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/nodes/ArrayCompareToNode.java

Print this page




 108     public void virtualize(VirtualizerTool tool) {
 109         ValueNode alias1 = tool.getAlias(array1);
 110         ValueNode alias2 = tool.getAlias(array2);
 111         if (alias1 == alias2) {
 112             // the same virtual objects will always have the same contents
 113             tool.replaceWithValue(ConstantNode.forInt(0, graph()));
 114         }
 115     }
 116 
 117     @NodeIntrinsic
 118     public static native int compareTo(Object array1, Object array2, int length1, int length2, @ConstantNodeParameter JavaKind kind1, @ConstantNodeParameter JavaKind kind2);
 119 
 120     @Override
 121     public void generate(NodeLIRBuilderTool gen) {
 122         Value result = gen.getLIRGeneratorTool().emitArrayCompareTo(kind1, kind2, gen.operand(array1), gen.operand(array2), gen.operand(length1), gen.operand(length2));
 123         gen.setResult(this, result);
 124     }
 125 
 126     @Override
 127     public LocationIdentity getLocationIdentity() {
 128         return NamedLocationIdentity.getArrayLocation(kind1);
 129     }
 130 
 131     @Override
 132     public MemoryNode getLastLocationAccess() {
 133         return lastLocationAccess;
 134     }
 135 
 136     @Override
 137     public void setLastLocationAccess(MemoryNode lla) {
 138         updateUsages(ValueNodeUtil.asNode(lastLocationAccess), ValueNodeUtil.asNode(lla));
 139         lastLocationAccess = lla;
 140     }
 141 }


 108     public void virtualize(VirtualizerTool tool) {
 109         ValueNode alias1 = tool.getAlias(array1);
 110         ValueNode alias2 = tool.getAlias(array2);
 111         if (alias1 == alias2) {
 112             // the same virtual objects will always have the same contents
 113             tool.replaceWithValue(ConstantNode.forInt(0, graph()));
 114         }
 115     }
 116 
 117     @NodeIntrinsic
 118     public static native int compareTo(Object array1, Object array2, int length1, int length2, @ConstantNodeParameter JavaKind kind1, @ConstantNodeParameter JavaKind kind2);
 119 
 120     @Override
 121     public void generate(NodeLIRBuilderTool gen) {
 122         Value result = gen.getLIRGeneratorTool().emitArrayCompareTo(kind1, kind2, gen.operand(array1), gen.operand(array2), gen.operand(length1), gen.operand(length2));
 123         gen.setResult(this, result);
 124     }
 125 
 126     @Override
 127     public LocationIdentity getLocationIdentity() {
 128         return kind1 != kind2 ? LocationIdentity.ANY_LOCATION : NamedLocationIdentity.getArrayLocation(kind1);
 129     }
 130 
 131     @Override
 132     public MemoryNode getLastLocationAccess() {
 133         return lastLocationAccess;
 134     }
 135 
 136     @Override
 137     public void setLastLocationAccess(MemoryNode lla) {
 138         updateUsages(ValueNodeUtil.asNode(lastLocationAccess), ValueNodeUtil.asNode(lla));
 139         lastLocationAccess = lla;
 140     }
 141 }
< prev index next >