public final class CheckcastArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, SingleMemoryKill
System.arraycopy(java.lang.Object, int, java.lang.Object, int, int) via a stub call that performs a
fast CHECKCAST check.
The target of the call is queried via
HotSpotHostForeignCallsProvider.lookupCheckcastArraycopyDescriptor(boolean).
Instead of throwing an ArrayStoreException, the stub is expected to return the number of
copied elements xor'd with -1. Users of this node are responsible for converting that
into the expected exception. A return value of 0 indicates that the operation was
successful.Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryKill.NoLocation| Modifier and Type | Field and Description |
|---|---|
static NodeClass<CheckcastArrayCopyCallNode> |
TYPE |
protected boolean |
uninit |
stateAfternextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Modifier | Constructor and Description |
|---|---|
protected |
CheckcastArrayCopyCallNode(ArrayCopyForeignCalls foreignCalls,
WordTypes wordTypes,
ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
ValueNode superCheckOffset,
ValueNode destElemKlass,
boolean uninit) |
| Modifier and Type | Method and Description |
|---|---|
static int |
checkcastArraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length,
Word superCheckOffset,
Object destElemKlass,
boolean uninit) |
ValueNode |
getDestination() |
ValueNode |
getDestinationPosition() |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
ValueNode |
getLength() |
ValueNode |
getSource() |
ValueNode |
getSourcePosition() |
boolean |
isUninit() |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
hasSideEffect, setStateAfter, stateAfter, verifyasFixedWithNextNode, next, setNextasFixedNodeasConstant, 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, waitasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillasNodestatesasFixedNodepublic static final NodeClass<CheckcastArrayCopyCallNode> TYPE
protected final boolean uninit
public ValueNode getSource()
public ValueNode getSourcePosition()
public ValueNode getDestination()
public ValueNode getDestinationPosition()
public ValueNode getLength()
public boolean isUninit()
public void lower(LoweringTool tool)
Lowerablepublic org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKill