public final class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single, MemoryAccess
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
MemoryCheckpoint.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 |
stateAfter
next
NODE_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, stateAfter
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, 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, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode
states
public 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()
ArrayRangeWriteNode
getArray
in class ArrayRangeWriteNode
public ValueNode getIndex()
ArrayRangeWriteNode
getIndex
in class ArrayRangeWriteNode
public ValueNode getLength()
ArrayRangeWriteNode
getLength
in class ArrayRangeWriteNode
public boolean isObjectArray()
ArrayRangeWriteNode
isObjectArray
in class ArrayRangeWriteNode
public boolean isInitialization()
ArrayRangeWriteNode
isInitialization
in class ArrayRangeWriteNode
public Kind getElementKind()
public void lower(LoweringTool tool)
Lowerable
public void addSnippetArguments(SnippetTemplate.Arguments args)
public LocationIdentity getLocationIdentity()
MemoryCheckpoint.Single
LocationIdentity.any()
will kill all memory locations.getLocationIdentity
in interface MemoryAccess
getLocationIdentity
in interface MemoryCheckpoint.Single
public MemoryNode getLastLocationAccess()
getLastLocationAccess
in interface MemoryAccess
public void setLastLocationAccess(MemoryNode lla)
setLastLocationAccess
in interface MemoryAccess
lla
- 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)