public final class InvokeNode extends AbstractMemoryCheckpoint implements Invoke, LIRLowerable, SingleMemoryKill, UncheckedInterfaceProvider
InvokeNode
represents all kinds of method calls.Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Invoke.InlineControl
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
protected int |
bci |
protected org.graalvm.word.LocationIdentity |
identity |
protected Invoke.InlineControl |
inlineControl |
protected boolean |
polymorphic |
static NodeClass<InvokeNode> |
TYPE |
stateAfter
next
NODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
InvokeNode(CallTargetNode callTarget,
int bci) |
InvokeNode(CallTargetNode callTarget,
int bci,
org.graalvm.word.LocationIdentity identity) |
InvokeNode(CallTargetNode callTarget,
int bci,
Stamp stamp) |
InvokeNode(CallTargetNode callTarget,
int bci,
Stamp stamp,
org.graalvm.word.LocationIdentity identity) |
InvokeNode(InvokeWithExceptionNode invoke) |
Modifier and Type | Method and Description |
---|---|
protected void |
afterClone(Node other) |
FixedNode |
asFixedNode() |
int |
bci() |
CallTargetNode |
callTarget() |
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
ValueNode |
classInit() |
NodeCycles |
estimatedNodeCycles() |
NodeSize |
estimatedNodeSize() |
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). |
Invoke.InlineControl |
getInlineControl() |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
boolean |
isAllowedUsageType(InputType type) |
boolean |
isPolymorphic()
True if this invocation is almost certainly polymorphic, false when in doubt.
|
void |
setBci(int newBci)
Remember the byte code index (BCI) for code generation or lowering purposes.
|
void |
setClassInit(ValueNode classInit) |
void |
setInlineControl(Invoke.InlineControl control) |
void |
setPolymorphic(boolean value) |
void |
setStateDuring(FrameState stateDuring)
Sets the
FrameState describing the program state during the execution of this
node. |
FrameState |
stateDuring() |
String |
toString(Verbosity verbosity)
Creates a String representation for this node with a given
Verbosity . |
Stamp |
uncheckedStamp()
Returns a stamp containing information about interface types that has not been verified or
null if no such stamp is available.
|
hasSideEffect, setStateAfter, stateAfter, verify
asNode, next, setNext
asConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, replaceAtAllUsages, replaceAtUsages, setStamp, stamp, updateStamp
applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePosition
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
computeStateDuring, getContextMethod, getContextType, getInvokeKind, getReceiver, getReceiverType, getTargetMethod, next, predecessor, setNext, setUseForInlining, useForInlining
hasSideEffect, setStateAfter, stateAfter
states
asNode
isAlive, updateInliningLogAfterClone, updateInliningLogAfterRegister
public static final NodeClass<InvokeNode> TYPE
protected int bci
protected boolean polymorphic
protected Invoke.InlineControl inlineControl
protected final org.graalvm.word.LocationIdentity identity
public InvokeNode(CallTargetNode callTarget, int bci)
public InvokeNode(CallTargetNode callTarget, int bci, org.graalvm.word.LocationIdentity identity)
public InvokeNode(CallTargetNode callTarget, int bci, Stamp stamp)
public InvokeNode(CallTargetNode callTarget, int bci, Stamp stamp, org.graalvm.word.LocationIdentity identity)
public InvokeNode(InvokeWithExceptionNode invoke)
protected void afterClone(Node other)
afterClone
in class Node
public FixedNode asFixedNode()
asFixedNode
in interface Invokable
public CallTargetNode callTarget()
callTarget
in interface Invoke
public boolean isPolymorphic()
Invoke
isPolymorphic
in interface Invoke
public void setPolymorphic(boolean value)
setPolymorphic
in interface Invoke
public void setInlineControl(Invoke.InlineControl control)
setInlineControl
in interface Invoke
public Invoke.InlineControl getInlineControl()
getInlineControl
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 org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKill
LocationIdentity.any()
will kill all memory locations.getKilledLocationIdentity
in interface SingleMemoryKill
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
public String toString(Verbosity verbosity)
Node
Verbosity
.public int bci()
bci
in interface DeoptBciSupplier
public void setBci(int newBci)
DeoptBciSupplier
setBci
in interface DeoptBciSupplier
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 Stamp uncheckedStamp()
UncheckedInterfaceProvider
uncheckedStamp
in interface UncheckedInterfaceProvider
public void setClassInit(ValueNode classInit)
setClassInit
in interface Invoke
public NodeCycles estimatedNodeCycles()
estimatedNodeCycles
in class Node
public NodeSize estimatedNodeSize()
estimatedNodeSize
in class Node