public final class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single, MemoryAccess
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertion| Modifier and Type | Field and Description |
|---|---|
(package private) ValueNode |
dest |
(package private) ValueNode |
destPos |
protected Kind |
elementKind |
(package private) MemoryNode |
lastLocationAccess |
(package private) ValueNode |
layoutHelper |
(package private) ValueNode |
length |
(package private) ValueNode |
src |
(package private) ValueNode |
srcPos |
static NodeClass<UnsafeArrayCopyNode> |
TYPE |
stateAfternextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
UnsafeArrayCopyNode(ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
Kind elementKind) |
UnsafeArrayCopyNode(ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
ValueNode layoutHelper) |
UnsafeArrayCopyNode(ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
ValueNode layoutHelper,
Kind elementKind) |
| Modifier and Type | Method and Description |
|---|---|
void |
addSnippetArguments(SnippetTemplate.Arguments args) |
static void |
arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length,
Kind elementKind) |
static void |
arraycopyPrimitive(Object src,
int srcPos,
Object dest,
int destPos,
int length,
int layoutHelper) |
ValueNode |
getArray()
The array that is written to.
|
Kind |
getElementKind() |
ValueNode |
getIndex()
The first modified index.
|
MemoryNode |
getLastLocationAccess() |
ValueNode |
getLength()
The length of the modified range.
|
LocationIdentity |
getLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
boolean |
isInitialization()
Returns whether this write is the initialization of the written location.
|
boolean |
isObjectArray()
Return true if the written array is an object array, false if it is a primitive array.
|
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
void |
setLastLocationAccess(MemoryNode lla) |
hasSideEffect, setStateAfter, stateAfterasNode, next, setNextasConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputsclone, finalize, getClass, notify, notifyAll, wait, wait, waitasNodestatespublic static final NodeClass<UnsafeArrayCopyNode> TYPE
ValueNode layoutHelper
MemoryNode lastLocationAccess
protected Kind elementKind
public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind)
public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind)
public ValueNode getArray()
ArrayRangeWriteNodegetArray in class ArrayRangeWriteNodepublic ValueNode getIndex()
ArrayRangeWriteNodegetIndex in class ArrayRangeWriteNodepublic ValueNode getLength()
ArrayRangeWriteNodegetLength in class ArrayRangeWriteNodepublic boolean isObjectArray()
ArrayRangeWriteNodeisObjectArray in class ArrayRangeWriteNodepublic boolean isInitialization()
ArrayRangeWriteNodeisInitialization in class ArrayRangeWriteNodepublic Kind getElementKind()
public void lower(LoweringTool tool)
Lowerablepublic void addSnippetArguments(SnippetTemplate.Arguments args)
public LocationIdentity getLocationIdentity()
MemoryCheckpoint.SingleLocationIdentity.any() will kill all memory locations.getLocationIdentity in interface MemoryAccessgetLocationIdentity in interface MemoryCheckpoint.Singlepublic MemoryNode getLastLocationAccess()
getLastLocationAccess in interface MemoryAccesspublic void setLastLocationAccess(MemoryNode lla)
setLastLocationAccess in interface MemoryAccesslla - the MemoryNode that represents the last kill of the locationpublic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, Kind elementKind)
public static void arraycopyPrimitive(Object src, int srcPos, Object dest, int destPos, int length, int layoutHelper)