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.ValueNumberable
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
MemoryCheckpoint.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 |
stateAfter
next
NODE_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, stateAfter
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, inferStamp, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, 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, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode, computeStateDuring, getContextMethod, getContextType, getInvokeKind, getReceiver, getReceiverType, next, predecessor, setNext, uncheckedStamp
hasSideEffect, setStateAfter, stateAfter
states
uncheckedOrNull
public 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 Invoke
void setCallTarget(CallTargetNode callTarget)
public boolean isPolymorphic()
Invoke
isPolymorphic
in interface Invoke
public void setPolymorphic(boolean value)
setPolymorphic
in interface Invoke
public boolean useForInlining()
useForInlining
in interface Invoke
public void setUseForInlining(boolean value)
setUseForInlining
in interface Invoke
public boolean isAllowedUsageType(InputType type)
isAllowedUsageType
in class ValueNode
public Map<Object,Object> getDebugProperties(Map<Object,Object> map)
Node
Map
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 Node
public LocationIdentity getLocationIdentity()
MemoryCheckpoint.Single
LocationIdentity.any()
will kill all memory locations.getLocationIdentity
in interface MemoryCheckpoint.Single
public void lower(LoweringTool tool)
Lowerable
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public String toString(Verbosity verbosity)
Node
Verbosity
.public void intrinsify(Node node)
intrinsify
in interface Invoke
public boolean canDeoptimize()
DeoptimizingNode
canDeoptimize
in interface DeoptimizingNode
public FrameState stateDuring()
stateDuring
in interface DeoptimizingNode.DeoptDuring
public void setStateDuring(FrameState stateDuring)
DeoptimizingNode.DeoptDuring
FrameState
describing the program state during the execution of this
node.setStateDuring
in interface DeoptimizingNode.DeoptDuring
public GuardingNode getGuard()
getGuard
in interface GuardedNode
public void setGuard(GuardingNode guard)
setGuard
in interface GuardedNode