public class ArrayCompareToNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable, Virtualizable, MemoryAccess
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
protected ValueNode |
array1
One array to be tested for equality.
|
protected ValueNode |
array2
The other array to be tested for equality.
|
protected JavaKind |
kind1
JavaKind of one array to compare. |
protected JavaKind |
kind2
JavaKind of the other array to compare. |
protected MemoryKill |
lastLocationAccess |
protected ValueNode |
length1
Length of one array.
|
protected ValueNode |
length2
Length of the other array.
|
static NodeClass<ArrayCompareToNode> |
TYPE |
nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
ArrayCompareToNode(NodeClass<? extends ArrayCompareToNode> c,
ValueNode array1,
ValueNode array2,
ValueNode length1,
ValueNode length2,
JavaKind kind1,
JavaKind kind2) |
|
ArrayCompareToNode(ValueNode array1,
ValueNode array2,
ValueNode length1,
ValueNode length2,
JavaKind kind1,
JavaKind kind2) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
static int |
compareTo(Object array1,
Object array2,
int length1,
int length2,
JavaKind kind1,
JavaKind kind2) |
void |
generate(NodeLIRBuilderTool gen) |
protected void |
generateArrayCompareTo(NodeLIRBuilderTool gen) |
ValueNode |
getArray1() |
ValueNode |
getArray2() |
JavaKind |
getKind1() |
JavaKind |
getKind2() |
MemoryKill |
getLastLocationAccess() |
ValueNode |
getLength1() |
ValueNode |
getLength2() |
org.graalvm.word.LocationIdentity |
getLocationIdentity() |
void |
setLastLocationAccess(MemoryKill lla) |
void |
virtualize(VirtualizerTool tool)
A node class can implement this method to convey information about what its effect would be
if some of its inputs were virtualized.
|
asFixedWithNextNode, next, setNextasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitasNodeasFixedNodepublic static final NodeClass<ArrayCompareToNode> TYPE
protected final JavaKind kind1
JavaKind of one array to compare.protected final JavaKind kind2
JavaKind of the other array to compare.protected ValueNode array1
protected ValueNode array2
protected ValueNode length1
protected ValueNode length2
protected MemoryKill lastLocationAccess
public ArrayCompareToNode(ValueNode array1, ValueNode array2, ValueNode length1, ValueNode length2, JavaKind kind1, JavaKind kind2)
public Node canonical(CanonicalizerTool tool)
Canonicalizablenull will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical in interface Canonicalizabletool - provides access to runtime interfaces like MetaAccessProviderpublic void virtualize(VirtualizerTool tool)
Virtualizablevirtualize in interface Virtualizabletool - the tool used to describe the effects of this nodepublic static int compareTo(Object array1, Object array2, int length1, int length2, JavaKind kind1, JavaKind kind2)
public JavaKind getKind1()
public JavaKind getKind2()
public ValueNode getArray1()
public ValueNode getArray2()
public ValueNode getLength1()
public ValueNode getLength2()
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerableprotected void generateArrayCompareTo(NodeLIRBuilderTool gen)
public org.graalvm.word.LocationIdentity getLocationIdentity()
getLocationIdentity in interface MemoryAccesspublic MemoryKill getLastLocationAccess()
getLastLocationAccess in interface MemoryAccesspublic void setLastLocationAccess(MemoryKill lla)
setLastLocationAccess in interface MemoryAccesslla - the MemoryKill that represents the last kill of the
LocationIdentity returned by MemoryAccess.getLocationIdentity()