public final class InvokeWithExceptionNode extends WithExceptionNode implements Invoke, IterableNodeType, SingleMemoryKill, LIRLowerable, UncheckedInterfaceProvider, Simplifiable
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableInvoke.InlineControlMemoryKill.NoLocationDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring| Modifier and Type | Field and Description |
|---|---|
protected int |
bci |
protected Invoke.InlineControl |
inlineControl |
protected boolean |
polymorphic |
static NodeClass<InvokeWithExceptionNode> |
TYPE |
exceptionEdge, nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesCYCLES_UNKNOWN_RATIONALE, SIZE_UNKNOWN_RATIONALEMULTI_KILL_NO_LOCATION, NO_LOCATION| Constructor and Description |
|---|
InvokeWithExceptionNode(CallTargetNode callTarget,
AbstractBeginNode exceptionEdge,
int bci) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
afterClone(Node other) |
int |
bci() |
CallTargetNode |
callTarget() |
boolean |
canDeoptimize()
Determines if this node needs deoptimization information.
|
ValueNode |
classInit() |
protected NodeSize |
dynamicNodeSizeEstimate()
Node subclasses should override this method if they need to specify a dynamically calculated
NodeSize value. |
NodeCycles |
estimatedNodeCycles() |
void |
generate(NodeLIRBuilderTool gen) |
Map<Object,Object> |
getDebugProperties(Map<Object,Object> map)
Fills a
Map with properties of this 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 |
hasSideEffect()
Determines if this node has a side-effect.
|
boolean |
isPolymorphic()
True if this invocation is almost certainly polymorphic, false when in doubt.
|
MethodCallTargetNode |
methodCallTarget() |
InvokeNode |
replaceWithInvoke()
Replaces this InvokeWithExceptionNode with a normal InvokeNode.
|
InvokeNode |
replaceWithNonThrowing()
Converts this node into a variant with the same semantics but without an exception edge.
|
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 |
setNext(FixedNode x) |
void |
setPolymorphic(boolean value) |
void |
setStateAfter(FrameState stateAfter)
Sets the
FrameState corresponding to the state of the JVM after execution of this
node. |
void |
setStateDuring(FrameState stateDuring)
Sets the
FrameState describing the program state during the execution of this
node. |
void |
simplify(SimplifierTool tool) |
FrameState |
stateAfter()
Gets the
FrameState corresponding to the state of the JVM after execution of this
node. |
FrameState |
stateDuring() |
String |
toString(Verbosity verbosity)
Creates a String representation for
this 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.
|
exceptionEdge, getPrimarySuccessor, getProfileData, getSuccessorCount, killExceptionEdge, next, probability, setExceptionEdge, setNext, setProbabilitysuccessorProbabilitiesasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceapplyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitcomputeStateDuring, getContextMethod, getContextType, getInvokeKind, getReceiver, getReceiverType, getTargetMethod, isAlive, next, predecessor, setUseForInlining, useForInliningasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillstatesasFixedNodeasNodeasFixedNodeOrNull, updateInliningLogAfterClone, updateInliningLogAfterRegisterpublic static final NodeClass<InvokeWithExceptionNode> TYPE
protected int bci
protected boolean polymorphic
protected Invoke.InlineControl inlineControl
public InvokeWithExceptionNode(CallTargetNode callTarget, AbstractBeginNode exceptionEdge, int bci)
protected void afterClone(Node other)
afterClone in class Nodepublic CallTargetNode callTarget()
callTarget in interface Invokepublic MethodCallTargetNode methodCallTarget()
public boolean isPolymorphic()
InvokeisPolymorphic in interface Invokepublic void setPolymorphic(boolean value)
setPolymorphic in interface Invokepublic void setInlineControl(Invoke.InlineControl control)
setInlineControl in interface Invokepublic Invoke.InlineControl getInlineControl()
getInlineControl in interface Invokepublic String toString(Verbosity verbosity)
Nodethis with a given Verbosity.public int bci()
bci in interface DeoptBciSupplierpublic void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic FrameState stateAfter()
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.stateAfter in interface StateSplitpublic void setStateAfter(FrameState stateAfter)
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.setStateAfter in interface StateSplitpublic boolean hasSideEffect()
StateSplitFrameState nodes.hasSideEffect in interface StateSplitpublic org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKillpublic Map<Object,Object> getDebugProperties(Map<Object,Object> map)
NodeMap with properties of this 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 void setBci(int newBci)
DeoptBciSuppliersetBci in interface DeoptBciSupplierpublic 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 Stamp uncheckedStamp()
UncheckedInterfaceProvideruncheckedStamp in interface UncheckedInterfaceProviderpublic void setClassInit(ValueNode classInit)
setClassInit in interface Invokepublic InvokeNode replaceWithInvoke()
public InvokeNode replaceWithNonThrowing()
WithExceptionNodeForeignCallNode.replaceWithNonThrowing in class WithExceptionNodepublic void simplify(SimplifierTool tool)
simplify in interface Simplifiablepublic NodeCycles estimatedNodeCycles()
estimatedNodeCycles in class Nodeprotected NodeSize dynamicNodeSizeEstimate()
NodeNodeSize value. If the node size is static please use NodeInfo.size().
NOTE: When overriding this method, make sure that *all* field reads are null checked (even if
Java semantics seemingly make the value of the field non-null). This is necessary because
node size estimates are needed even during graph decoding which, for some nodes, first
reflectively creates a stub and then later, reflectively, populates its fields. This method
could be invoked between these two points. For this reason, when overriding this method
assume that all fields can and will be null.dynamicNodeSizeEstimate in class Node