public final class LoadMethodNode extends FixedWithNextNode implements Lowerable, Canonicalizable
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
(package private) ValueNode |
hub |
protected ResolvedJavaMethod |
method |
protected ResolvedJavaType |
receiverType |
static NodeClass<LoadMethodNode> |
TYPE |
nextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
LoadMethodNode(Stamp stamp,
ResolvedJavaMethod method,
ResolvedJavaType receiverType,
ValueNode hub) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
ValueNode |
getHub() |
ResolvedJavaMethod |
getMethod() |
ResolvedJavaType |
getReceiverType() |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
private Node |
resolveExactMethod(CanonicalizerTool tool,
ResolvedJavaType type)
Find the method which would be loaded.
|
asNode, 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, verifyInputspublic static final NodeClass<LoadMethodNode> TYPE
protected final ResolvedJavaMethod method
protected final ResolvedJavaType receiverType
public LoadMethodNode(Stamp stamp, ResolvedJavaMethod method, ResolvedJavaType receiverType, ValueNode hub)
public void lower(LoweringTool tool)
Lowerablepublic Node canonical(CanonicalizerTool tool)
Canonicalizablenull will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical in interface Canonicalizabletool - provides access to runtime interfaces like MetaAccessProviderprivate Node resolveExactMethod(CanonicalizerTool tool, ResolvedJavaType type)
tool - type - the exact type of object being loaded fromtype or null if it doesn't implement
the methodpublic ResolvedJavaMethod getMethod()
public ResolvedJavaType getReceiverType()