public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Simplifiable
CallTargetNode.InvokeKindNode.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberable| Modifier and Type | Field and Description |
|---|---|
static NodeClass<MethodCallTargetNode> |
TYPE |
protected JavaTypeProfile |
typeProfile |
arguments, invokeKind, referencedType, returnStamp, targetMethodEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
|
MethodCallTargetNode(CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
ValueNode[] arguments,
StampPair returnStamp,
JavaTypeProfile typeProfile) |
protected |
MethodCallTargetNode(NodeClass<? extends MethodCallTargetNode> c,
CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
ValueNode[] arguments,
StampPair returnStamp,
JavaTypeProfile typeProfile) |
| Modifier and Type | Method and Description |
|---|---|
static ResolvedJavaMethod |
devirtualizeCall(CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
ResolvedJavaType contextType,
Assumptions assumptions,
Stamp receiverStamp) |
static MethodCallTargetNode |
find(StructuredGraph graph,
ResolvedJavaMethod method) |
static ResolvedJavaMethod |
findSpecialCallTarget(CallTargetNode.InvokeKind invokeKind,
ValueNode receiver,
ResolvedJavaMethod targetMethod,
ResolvedJavaType contextType) |
JavaTypeProfile |
getTypeProfile() |
boolean |
isStatic()
Checks whether this is an invocation of a static method.
|
ValueNode |
receiver()
Gets the instruction that produces the receiver object for this invocation, if any.
|
JavaKind |
returnKind() |
void |
setJavaTypeProfile(JavaTypeProfile profile) |
void |
simplify(SimplifierTool tool) |
String |
targetName()
A human-readable representation of the target, used for debug printing only.
|
String |
toString(Verbosity verbosity)
Creates a String representation for
this with a given Verbosity. |
static MethodCallTargetNode |
tryDevirtualizeInterfaceCall(ValueNode receiver,
ResolvedJavaMethod targetMethod,
JavaTypeProfile profile,
Assumptions assumptions,
ResolvedJavaType contextType,
MethodCallTargetNode callTarget,
FixedNode insertionPoint) |
boolean |
verify() |
arguments, createReturnStamp, generate, invoke, invokeKind, referencedType, returnStamp, setInvokeKind, setReferencedType, setTargetMethod, targetMethodasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionpublic static final NodeClass<MethodCallTargetNode> TYPE
protected JavaTypeProfile typeProfile
public MethodCallTargetNode(CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, StampPair returnStamp, JavaTypeProfile typeProfile)
protected MethodCallTargetNode(NodeClass<? extends MethodCallTargetNode> c, CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, StampPair returnStamp, JavaTypeProfile typeProfile)
public ValueNode receiver()
null if this invocation does not take a receiver objectpublic boolean isStatic()
true if the invocation is a static invocationpublic JavaKind returnKind()
public String toString(Verbosity verbosity)
Nodethis with a given Verbosity.public static ResolvedJavaMethod findSpecialCallTarget(CallTargetNode.InvokeKind invokeKind, ValueNode receiver, ResolvedJavaMethod targetMethod, ResolvedJavaType contextType)
public static ResolvedJavaMethod devirtualizeCall(CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ResolvedJavaType contextType, Assumptions assumptions, Stamp receiverStamp)
public void simplify(SimplifierTool tool)
simplify in interface Simplifiablepublic static MethodCallTargetNode tryDevirtualizeInterfaceCall(ValueNode receiver, ResolvedJavaMethod targetMethod, JavaTypeProfile profile, Assumptions assumptions, ResolvedJavaType contextType, MethodCallTargetNode callTarget, FixedNode insertionPoint)
public JavaTypeProfile getTypeProfile()
public String targetName()
CallTargetNodetargetName in class CallTargetNodepublic static MethodCallTargetNode find(StructuredGraph graph, ResolvedJavaMethod method)
public void setJavaTypeProfile(JavaTypeProfile profile)