public abstract class BasicArrayCopyNode extends WithExceptionNode implements DeoptBciSupplier, StateSplit, Virtualizable, SingleMemoryKill, MemoryAccess, Lowerable, DeoptimizingNode.DeoptDuring
System.arraycopy(java.lang.Object, int, java.lang.Object, int, int).Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryKill.NoLocationDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring| Modifier and Type | Field and Description |
|---|---|
protected int |
bci |
protected JavaKind |
elementKind |
protected MemoryKill |
lastLocationAccess |
protected FrameState |
stateAfter |
static NodeClass<BasicArrayCopyNode> |
TYPE |
exceptionEdge, nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Constructor and Description |
|---|
BasicArrayCopyNode(NodeClass<? extends BasicArrayCopyNode> type,
ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
JavaKind elementKind) |
BasicArrayCopyNode(NodeClass<? extends BasicArrayCopyNode> type,
ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
JavaKind elementKind,
int bci) |
| Modifier and Type | Method and Description |
|---|---|
int |
bci() |
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
static boolean |
checkBounds(int position,
int length,
VirtualObjectNode virtualObject) |
static boolean |
checkEntryTypes(int srcPos,
int length,
VirtualObjectNode src,
ResolvedJavaType destComponentType,
VirtualizerTool tool) |
void |
computeStateDuring(FrameState currentStateAfter)
Compute the
FrameState describing the program state during the execution of this
node from an input FrameState describing the program state after finishing the
execution of this node. |
ValueNode |
getDestination() |
ValueNode |
getDestinationPosition() |
JavaKind |
getElementKind() |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
MemoryKill |
getLastLocationAccess() |
ValueNode |
getLength() |
org.graalvm.word.LocationIdentity |
getLocationIdentity() |
ValueNode |
getSource() |
ValueNode |
getSourcePosition() |
boolean |
hasSideEffect()
Determines if this node has a side-effect.
|
boolean |
isExact() |
static JavaKind |
selectComponentKind(BasicArrayCopyNode arraycopy) |
void |
setBci(int bci)
Remember the byte code index (BCI) for code generation or lowering purposes.
|
void |
setLastLocationAccess(MemoryKill lla) |
void |
setSource(ValueNode value) |
void |
setSourcePosition(ValueNode value) |
void |
setStateAfter(FrameState x)
Sets the
FrameState corresponding to the state of the JVM after execution of this
node. |
void |
setStateDuring(FrameState stateDuring)
Sets the
FrameState describing the program state during the execution of this
node. |
FrameState |
stateAfter()
Gets the
FrameState corresponding to the state of the JVM after execution of this
node. |
FrameState |
stateDuring() |
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.
|
exceptionEdge, getPrimarySuccessor, getProfileData, getSuccessorCount, killExceptionEdge, next, probability, replaceWithNonThrowing, setExceptionEdge, setNext, setProbabilitysuccessorProbabilitiesasFixedNode, 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, waitasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillstatesasFixedNodeasNodepublic static final NodeClass<BasicArrayCopyNode> TYPE
protected MemoryKill lastLocationAccess
protected FrameState stateAfter
protected JavaKind elementKind
protected int bci
public BasicArrayCopyNode(NodeClass<? extends BasicArrayCopyNode> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, JavaKind elementKind, int bci)
public int bci()
bci in interface DeoptBciSupplierpublic void setBci(int bci)
DeoptBciSuppliersetBci in interface DeoptBciSupplierpublic JavaKind getElementKind()
public org.graalvm.word.LocationIdentity getLocationIdentity()
getLocationIdentity in interface MemoryAccesspublic org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKillpublic 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()public FrameState stateDuring()
stateDuring in interface DeoptimizingNode.DeoptDuringpublic void setStateDuring(FrameState stateDuring)
DeoptimizingNode.DeoptDuringFrameState describing the program state during the execution of this
node.setStateDuring in interface DeoptimizingNode.DeoptDuringpublic FrameState stateAfter()
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.stateAfter in interface StateSplitpublic void setStateAfter(FrameState x)
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.setStateAfter in interface StateSplitpublic boolean hasSideEffect()
StateSplitFrameState nodes.hasSideEffect in interface StateSplitpublic static JavaKind selectComponentKind(BasicArrayCopyNode arraycopy)
public ValueNode getSource()
public ValueNode getSourcePosition()
public ValueNode getDestination()
public ValueNode getDestinationPosition()
public ValueNode getLength()
public void setSource(ValueNode value)
public void setSourcePosition(ValueNode value)
public static boolean checkBounds(int position,
int length,
VirtualObjectNode virtualObject)
public static boolean checkEntryTypes(int srcPos,
int length,
VirtualObjectNode src,
ResolvedJavaType destComponentType,
VirtualizerTool tool)
public boolean isExact()
public void virtualize(VirtualizerTool tool)
Virtualizablevirtualize in interface Virtualizabletool - the tool used to describe the effects of this nodepublic boolean canDeoptimize()
DeoptimizingNodecanDeoptimize in interface DeoptimizingNodepublic void computeStateDuring(FrameState currentStateAfter)
DeoptimizingNode.DeoptDuringFrameState describing the program state during the execution of this
node from an input FrameState describing the program state after finishing the
execution of this node.computeStateDuring in interface DeoptimizingNode.DeoptDuring