public class BasicArrayCopyNode extends AbstractMemoryCheckpoint implements Virtualizable, MemoryCheckpoint.Single, MemoryAccess, Lowerable, DeoptimizingNode.DeoptDuring
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertionDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring| Modifier and Type | Field and Description |
|---|---|
protected int |
bci |
protected ValueNode |
dest |
protected ValueNode |
destPos |
protected Kind |
elementKind |
protected MemoryNode |
lastLocationAccess |
protected ValueNode |
length |
protected ValueNode |
src |
protected ValueNode |
srcPos |
(package private) FrameState |
stateDuring |
static NodeClass<BasicArrayCopyNode> |
TYPE |
stateAfternextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type,
ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
Kind elementKind) |
BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type,
ValueNode src,
ValueNode srcPos,
ValueNode dest,
ValueNode destPos,
ValueNode length,
Kind elementKind,
int bci) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
private static boolean |
checkBounds(int position,
int length,
VirtualObjectNode virtualObject) |
private 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. |
int |
getBci() |
ValueNode |
getDestination() |
ValueNode |
getDestinationPosition() |
Kind |
getElementKind() |
MemoryNode |
getLastLocationAccess() |
ValueNode |
getLength() |
LocationIdentity |
getLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
ValueNode |
getSource() |
ValueNode |
getSourcePosition() |
boolean |
isExact() |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
void |
setLastLocationAccess(MemoryNode lla) |
void |
setStateDuring(FrameState stateDuring)
Sets the
FrameState describing the program state during the 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.
|
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, waitasNodehasSideEffect, setStateAfter, stateAfterstatespublic static final NodeClass<BasicArrayCopyNode> TYPE
FrameState stateDuring
protected MemoryNode lastLocationAccess
protected Kind elementKind
protected int bci
public BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind, int bci)
public BasicArrayCopyNode(NodeClass<? extends AbstractMemoryCheckpoint> type, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind)
public ValueNode getSourcePosition()
public ValueNode getDestination()
public ValueNode getDestinationPosition()
public int getBci()
public Kind getElementKind()
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 void lower(LoweringTool tool)
Lowerableprivate static boolean checkBounds(int position, int length, VirtualObjectNode virtualObject)
private 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 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 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