public class ArrayCopyUnrollNode extends ArrayRangeWriteNode implements MemoryCheckpoint.Single, Lowerable, 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 |
|---|---|
protected ValueNode |
dest |
protected ValueNode |
destPos |
private Kind |
elementKind |
private MemoryNode |
lastLocationAccess |
protected ValueNode |
length |
protected ValueNode |
src |
protected ValueNode |
srcPos |
static NodeClass<ArrayCopyUnrollNode> |
TYPE |
private int |
unrolledLength |
stateAfternextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
ArrayCopyUnrollNode(ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
int unrolledLength,
Kind elementKind) |
| Modifier and Type | Method and Description |
|---|---|
static void |
arraycopy(Object nonNullSrc,
int srcPos,
Object nonNullDest,
int destPos,
int length,
int unrolledLength,
Kind elementKind) |
ValueNode |
getArray()
The array that is written to.
|
ValueNode |
getDestination() |
ValueNode |
getDestinationPosition() |
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.
|
ValueNode |
getSource() |
ValueNode |
getSourcePosition() |
int |
getUnrollLength() |
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, waitasNodeasNodestatespublic static final NodeClass<ArrayCopyUnrollNode> TYPE
private Kind elementKind
private int unrolledLength
private MemoryNode lastLocationAccess
public ValueNode getSourcePosition()
public ValueNode getDestination()
public ValueNode getDestinationPosition()
public ValueNode getLength()
ArrayRangeWriteNodegetLength in class ArrayRangeWriteNodepublic ValueNode getArray()
ArrayRangeWriteNodegetArray in class ArrayRangeWriteNodepublic ValueNode getIndex()
ArrayRangeWriteNodegetIndex in class ArrayRangeWriteNodepublic boolean isObjectArray()
ArrayRangeWriteNodeisObjectArray in class ArrayRangeWriteNodepublic boolean isInitialization()
ArrayRangeWriteNodeisInitialization in class ArrayRangeWriteNodepublic static void arraycopy(Object nonNullSrc, int srcPos, Object nonNullDest, int destPos, int length, int unrolledLength, Kind elementKind)
public int getUnrollLength()
public Kind getElementKind()
public LocationIdentity getLocationIdentity()
MemoryCheckpoint.SingleLocationIdentity.any() will kill all memory locations.getLocationIdentity in interface MemoryAccessgetLocationIdentity in interface MemoryCheckpoint.Singlepublic void lower(LoweringTool tool)
Lowerablepublic MemoryNode getLastLocationAccess()
getLastLocationAccess in interface MemoryAccesspublic void setLastLocationAccess(MemoryNode lla)
setLastLocationAccess in interface MemoryAccesslla - the MemoryNode that represents the last kill of the location