public class ArrayCopyUnrollNode extends ArrayRangeWriteNode implements MemoryCheckpoint.Single, Lowerable, 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 |
---|---|
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 |
stateAfter
next
NODE_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, 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
asNode
states
public 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()
ArrayRangeWriteNode
getLength
in class ArrayRangeWriteNode
public ValueNode getArray()
ArrayRangeWriteNode
getArray
in class ArrayRangeWriteNode
public ValueNode getIndex()
ArrayRangeWriteNode
getIndex
in class ArrayRangeWriteNode
public boolean isObjectArray()
ArrayRangeWriteNode
isObjectArray
in class ArrayRangeWriteNode
public boolean isInitialization()
ArrayRangeWriteNode
isInitialization
in class ArrayRangeWriteNode
public 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.Single
LocationIdentity.any()
will kill all memory locations.getLocationIdentity
in interface MemoryAccess
getLocationIdentity
in interface MemoryCheckpoint.Single
public void lower(LoweringTool tool)
Lowerable
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 location