public abstract class BasicObjectCloneNode extends MacroStateSplitNode implements VirtualizableAllocation, ArrayLengthProvider
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 |
|---|---|
static NodeClass<BasicObjectCloneNode> |
TYPE |
stateAfterarguments, bci, invokeKind, returnType, targetMethodnextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
BasicObjectCloneNode(NodeClass<? extends MacroNode> c,
CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
int bci,
JavaType returnType,
ValueNode... arguments) |
| Modifier and Type | Method and Description |
|---|---|
protected VirtualInstanceNode |
createVirtualInstanceNode(ResolvedJavaType type,
boolean hasIdentity) |
protected static ResolvedJavaType |
getConcreteType(Stamp stamp,
Assumptions assumptions,
MetaAccessProvider metaAccess) |
ValueNode |
getObject() |
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
protected static boolean |
isCloneableType(ResolvedJavaType type,
MetaAccessProvider metaAccess) |
ValueNode |
length() |
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.
|
getLocationIdentity, hasSideEffect, replaceSnippetInvokes, setStateAfter, stateAftercreateInvoke, getBci, getLoweredSnippetGraph, getLoweredSubstitutionGraph, getReturnType, getTargetMethod, lower, lowerReplacement, replaceWithInvokeasNode, next, setNextasConstant, asJavaConstant, getKind, graph, 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, waitasNodestatespublic static final NodeClass<BasicObjectCloneNode> TYPE
public BasicObjectCloneNode(NodeClass<? extends MacroNode> c, CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, int bci, JavaType returnType, ValueNode... arguments)
public boolean inferStamp()
ValueNodeValueNode if they need to recompute
their stamp if their inputs change. A typical implementation will compute the stamp and pass
it to ValueNode.updateStamp(Stamp), whose return value can be used as the result of this
method.inferStamp in class ValueNodeprotected static boolean isCloneableType(ResolvedJavaType type, MetaAccessProvider metaAccess)
protected static ResolvedJavaType getConcreteType(Stamp stamp, Assumptions assumptions, MetaAccessProvider metaAccess)
public void virtualize(VirtualizerTool tool)
Virtualizablevirtualize in interface Virtualizabletool - the tool used to describe the effects of this nodeprotected VirtualInstanceNode createVirtualInstanceNode(ResolvedJavaType type, boolean hasIdentity)
public ValueNode length()
length in interface ArrayLengthProvider