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.ValueNumberable
MemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertion
DeoptimizingNode.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 |
stateAfter
next
NODE_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, 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
hasSideEffect, setStateAfter, stateAfter
states
public 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.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 void lower(LoweringTool tool)
Lowerable
private 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)
Virtualizable
virtualize
in interface Virtualizable
tool
- the tool used to describe the effects of this nodepublic boolean canDeoptimize()
DeoptimizingNode
canDeoptimize
in interface DeoptimizingNode
public FrameState stateDuring()
stateDuring
in interface DeoptimizingNode.DeoptDuring
public void setStateDuring(FrameState stateDuring)
DeoptimizingNode.DeoptDuring
FrameState
describing the program state during the execution of this
node.setStateDuring
in interface DeoptimizingNode.DeoptDuring
public void computeStateDuring(FrameState currentStateAfter)
DeoptimizingNode.DeoptDuring
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.computeStateDuring
in interface DeoptimizingNode.DeoptDuring