public class ArrayEqualsNode extends PureFunctionStubIntrinsicNode implements Canonicalizable, Virtualizable
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.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 |
kind
JavaKind of the arrays to compare. |
protected ValueNode |
length
Length of both arrays.
|
protected ValueNode |
offset1
array base offset of array1.
|
protected ValueNode |
offset2
array base offset of array2.
|
static NodeClass<ArrayEqualsNode> |
TYPE |
locationIdentity, runtimeCheckedCPUFeatures
next
EMPTY_ARRAY, stamp
NODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
ArrayEqualsNode(NodeClass<? extends ArrayEqualsNode> c,
ValueNode array1,
ValueNode offset1,
ValueNode array2,
ValueNode offset2,
ValueNode length,
JavaKind kind,
EnumSet<?> runtimeCheckedCPUFeatures) |
|
ArrayEqualsNode(ValueNode array1,
ValueNode offset1,
ValueNode array2,
ValueNode offset2,
ValueNode length,
JavaKind kind) |
|
ArrayEqualsNode(ValueNode array1,
ValueNode offset1,
ValueNode array2,
ValueNode offset2,
ValueNode length,
JavaKind kind,
EnumSet<?> runtimeCheckedCPUFeatures) |
Modifier and Type | Method and Description |
---|---|
protected static boolean |
arrayEquals(ConstantReflectionProvider constantReflection,
JavaConstant a,
int startIndexA,
JavaConstant b,
int startIndexB,
int len) |
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
void |
emitIntrinsic(NodeLIRBuilderTool gen)
Emit the method body.
|
static boolean |
equals(org.graalvm.word.Pointer array1,
long offset1,
org.graalvm.word.Pointer array2,
long offset2,
int length,
JavaKind kind) |
static boolean |
equals(org.graalvm.word.Pointer array1,
long offset1,
org.graalvm.word.Pointer array2,
long offset2,
int length,
JavaKind kind,
EnumSet<?> runtimeCheckedCPUFeatures) |
ValueNode |
getArray1() |
ValueNode |
getArray2() |
ValueNode[] |
getForeignCallArguments() |
ForeignCallDescriptor |
getForeignCallDescriptor() |
JavaKind |
getKind() |
ValueNode |
getLength() |
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.
|
getLastLocationAccess, getLocationIdentity, getRuntimeCheckedCPUFeatures, setLastLocationAccess
asFixedWithNextNode, next, setNext
asFixedNode, verify
asConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterface
afterClone, 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, hasExactlyOneUsageOfType, 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, withNodeSourcePosition
clone, equals, getClass, notify, notifyAll, wait, wait, wait
generate, graph
asNode
asFixedNode
public static final NodeClass<ArrayEqualsNode> TYPE
protected final JavaKind kind
JavaKind
of the arrays to compare.
The arrays are guaranteed to always have the same kind because the signature of
Arrays.equals(long[], long[])
only allows arrays of the same kind.protected ValueNode array1
protected ValueNode offset1
protected ValueNode array2
protected ValueNode offset2
protected ValueNode length
public ArrayEqualsNode(ValueNode array1, ValueNode offset1, ValueNode array2, ValueNode offset2, ValueNode length, JavaKind kind)
public ArrayEqualsNode(ValueNode array1, ValueNode offset1, ValueNode array2, ValueNode offset2, ValueNode length, JavaKind kind, EnumSet<?> runtimeCheckedCPUFeatures)
protected static boolean arrayEquals(ConstantReflectionProvider constantReflection, JavaConstant a, int startIndexA, JavaConstant b, int startIndexB, int len)
public Node canonical(CanonicalizerTool tool)
Canonicalizable
null
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 Canonicalizable
tool
- provides access to runtime interfaces like MetaAccessProvider
public void virtualize(VirtualizerTool tool)
Virtualizable
virtualize
in interface Virtualizable
tool
- the tool used to describe the effects of this nodepublic static boolean equals(org.graalvm.word.Pointer array1, long offset1, org.graalvm.word.Pointer array2, long offset2, int length, JavaKind kind)
public static boolean equals(org.graalvm.word.Pointer array1, long offset1, org.graalvm.word.Pointer array2, long offset2, int length, JavaKind kind, EnumSet<?> runtimeCheckedCPUFeatures)
public ValueNode getArray1()
public ValueNode getArray2()
public ValueNode getLength()
public JavaKind getKind()
public ForeignCallDescriptor getForeignCallDescriptor()
getForeignCallDescriptor
in interface IntrinsicMethodNodeInterface
public ValueNode[] getForeignCallArguments()
getForeignCallArguments
in interface IntrinsicMethodNodeInterface
public void emitIntrinsic(NodeLIRBuilderTool gen)
IntrinsicMethodNodeInterface
emitIntrinsic
in interface IntrinsicMethodNodeInterface