public final class InvokeNode extends AbstractMemoryCheckpoint implements Invoke, LIRLowerable, MemoryCheckpoint.Single
InvokeNode represents all kinds of method calls.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuringMemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertion| Modifier and Type | Field and Description |
|---|---|
protected int |
bci |
(package private) CallTargetNode |
callTarget |
(package private) GuardingNode |
guard |
protected boolean |
polymorphic |
(package private) FrameState |
stateDuring |
static NodeClass<InvokeNode> |
TYPE |
protected boolean |
useForInlining |
stateAfternextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
InvokeNode(CallTargetNode callTarget,
int bci) |
InvokeNode(CallTargetNode callTarget,
int bci,
Stamp stamp) |
| Modifier and Type | Method and Description |
|---|---|
int |
bci() |
CallTargetNode |
callTarget() |
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
void |
generate(NodeLIRBuilderTool gen) |
Map<Object,Object> |
getDebugProperties(Map<Object,Object> map)
Fills a
Map with properties of this node for use in debugging (e.g., to view in the
ideal graph visualizer). |
GuardingNode |
getGuard() |
LocationIdentity |
getLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
void |
intrinsify(Node node) |
boolean |
isAllowedUsageType(InputType type) |
boolean |
isPolymorphic()
True if this invocation is almost certainly polymorphic, false when in doubt.
|
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
(package private) void |
setCallTarget(CallTargetNode callTarget) |
void |
setGuard(GuardingNode guard) |
void |
setPolymorphic(boolean value) |
void |
setStateDuring(FrameState stateDuring)
Sets the
FrameState describing the program state during the execution of this
node. |
void |
setUseForInlining(boolean value) |
FrameState |
stateDuring() |
String |
toString(Verbosity verbosity)
Creates a String representation for this node with a given
Verbosity. |
boolean |
useForInlining() |
hasSideEffect, setStateAfter, stateAfterasNode, next, setNextasConstant, asJavaConstant, getKind, graph, inferStamp, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, 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, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputsclone, finalize, getClass, notify, notifyAll, wait, wait, waitasNode, computeStateDuring, getContextMethod, getContextType, getInvokeKind, getReceiver, getReceiverType, next, predecessor, setNext, uncheckedStamphasSideEffect, setStateAfter, stateAfterstatesuncheckedOrNullpublic static final NodeClass<InvokeNode> TYPE
CallTargetNode callTarget
FrameState stateDuring
GuardingNode guard
protected final int bci
protected boolean polymorphic
protected boolean useForInlining
public InvokeNode(CallTargetNode callTarget, int bci)
public InvokeNode(CallTargetNode callTarget, int bci, Stamp stamp)
public CallTargetNode callTarget()
callTarget in interface Invokevoid setCallTarget(CallTargetNode callTarget)
public boolean isPolymorphic()
InvokeisPolymorphic in interface Invokepublic void setPolymorphic(boolean value)
setPolymorphic in interface Invokepublic boolean useForInlining()
useForInlining in interface Invokepublic void setUseForInlining(boolean value)
setUseForInlining in interface Invokepublic boolean isAllowedUsageType(InputType type)
isAllowedUsageType in class ValueNodepublic Map<Object,Object> getDebugProperties(Map<Object,Object> map)
NodeMap with properties of this node for use in debugging (e.g., to view in the
ideal graph visualizer). Subclasses overriding this method should also fill the map using
their superclass.getDebugProperties in class Nodepublic LocationIdentity getLocationIdentity()
MemoryCheckpoint.SingleLocationIdentity.any() will kill all memory locations.getLocationIdentity in interface MemoryCheckpoint.Singlepublic void lower(LoweringTool tool)
Lowerablepublic void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic String toString(Verbosity verbosity)
NodeVerbosity.public void intrinsify(Node node)
intrinsify in interface Invokepublic boolean canDeoptimize()
DeoptimizingNodecanDeoptimize in interface DeoptimizingNodepublic FrameState stateDuring()
stateDuring in interface DeoptimizingNode.DeoptDuringpublic void setStateDuring(FrameState stateDuring)
DeoptimizingNode.DeoptDuringFrameState describing the program state during the execution of this
node.setStateDuring in interface DeoptimizingNode.DeoptDuringpublic GuardingNode getGuard()
getGuard in interface GuardedNodepublic void setGuard(GuardingNode guard)
setGuard in interface GuardedNode