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.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 |
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, runtimeCheckedCPUFeaturesnextEMPTY_ARRAY, stampNODE_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, setLastLocationAccessasFixedWithNextNode, 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, 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, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitgenerate, graphasNodeasFixedNodepublic 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)
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 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 IntrinsicMethodNodeInterfacepublic ValueNode[] getForeignCallArguments()
getForeignCallArguments in interface IntrinsicMethodNodeInterfacepublic void emitIntrinsic(NodeLIRBuilderTool gen)
IntrinsicMethodNodeInterfaceemitIntrinsic in interface IntrinsicMethodNodeInterface