public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Simplifiable
CallTargetNode.InvokeKind
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Modifier and Type | Field and Description |
---|---|
protected JavaTypeProfile |
profile |
protected JavaType |
returnType |
static NodeClass<MethodCallTargetNode> |
TYPE |
arguments, invokeKind, targetMethod
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
|
MethodCallTargetNode(CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
ValueNode[] arguments,
JavaType returnType,
JavaTypeProfile profile) |
protected |
MethodCallTargetNode(NodeClass<? extends MethodCallTargetNode> c,
CallTargetNode.InvokeKind invokeKind,
ResolvedJavaMethod targetMethod,
ValueNode[] arguments,
JavaType returnType,
JavaTypeProfile profile) |
Modifier and Type | Method and Description |
---|---|
static MethodCallTargetNode |
find(StructuredGraph graph,
ResolvedJavaMethod method) |
static ResolvedJavaMethod |
findSpecialCallTarget(CallTargetNode.InvokeKind invokeKind,
ValueNode receiver,
ResolvedJavaMethod targetMethod,
ResolvedJavaType contextType) |
JavaTypeProfile |
getProfile() |
Invoke |
invoke() |
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.
|
Kind |
returnKind() |
Stamp |
returnStamp() |
JavaType |
returnType() |
void |
simplify(SimplifierTool tool)
Must be overridden by subclasses that implement
Simplifiable . |
String |
targetName()
A human-readable representation of the target, used for debug printing only.
|
String |
toString(Verbosity verbosity)
Creates a String representation for this node with a given
Verbosity . |
private void |
tryCheckCastSingleImplementor(Assumptions assumptions,
ValueNode receiver,
ResolvedJavaType declaredReceiverType) |
boolean |
verify() |
arguments, generate, invokeKind, setInvokeKind, setTargetMethod, targetMethod
asConstant, asJavaConstant, asNode, 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, successors, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
public static final NodeClass<MethodCallTargetNode> TYPE
protected final JavaType returnType
protected JavaTypeProfile profile
public MethodCallTargetNode(CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, JavaTypeProfile profile)
protected MethodCallTargetNode(NodeClass<? extends MethodCallTargetNode> c, CallTargetNode.InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, JavaTypeProfile profile)
public ValueNode receiver()
null
if this invocation does not take a receiver objectpublic boolean isStatic()
true
if the invocation is a static invocationpublic Kind returnKind()
public String toString(Verbosity verbosity)
Node
Verbosity
.public static ResolvedJavaMethod findSpecialCallTarget(CallTargetNode.InvokeKind invokeKind, ValueNode receiver, ResolvedJavaMethod targetMethod, ResolvedJavaType contextType)
public void simplify(SimplifierTool tool)
Node
Simplifiable
. The implementation in
Node
exists to obviate the need to cast a node before invoking
Simplifiable.simplify(SimplifierTool)
.simplify
in interface Simplifiable
simplify
in class Node
private void tryCheckCastSingleImplementor(Assumptions assumptions, ValueNode receiver, ResolvedJavaType declaredReceiverType)
public JavaTypeProfile getProfile()
public Stamp returnStamp()
returnStamp
in class CallTargetNode
public JavaType returnType()
public String targetName()
CallTargetNode
targetName
in class CallTargetNode
public static MethodCallTargetNode find(StructuredGraph graph, ResolvedJavaMethod method)