public abstract class MacroWithExceptionNode extends WithExceptionNode implements MacroInvokable
MacroNode using WithExceptionNode as a base class.
See the documentation of MacroInvokable for more information.MacroInvokable,
MacroNodeNode.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryKill.NoLocation| Modifier and Type | Field and Description |
|---|---|
protected NodeInputList<ValueNode> |
arguments |
protected int |
bci |
protected ResolvedJavaMethod |
callerMethod |
protected CallTargetNode.InvokeKind |
invokeKind |
protected StampPair |
returnStamp |
protected FrameState |
stateAfter |
protected ResolvedJavaMethod |
targetMethod |
static NodeClass<MacroWithExceptionNode> |
TYPE |
exceptionEdge, nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Modifier | Constructor and Description |
|---|---|
protected |
MacroWithExceptionNode(NodeClass<? extends MacroWithExceptionNode> c,
MacroNode.MacroParams p) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
afterClone(Node other) |
int |
bci() |
InvokeWithExceptionNode |
createInvoke(Node oldResult)
Creates an invoke for the
MacroWithExceptionNode.getTargetMethod() associated with this node. |
NodeInputList<ValueNode> |
getArguments()
Gets the arguments for this macro node.
|
ResolvedJavaMethod |
getContextMethod()
Returns the method from which the call is executed.
|
CallTargetNode.InvokeKind |
getInvokeKind() |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
ResolvedJavaMethod |
getTargetMethod() |
boolean |
hasSideEffect()
Determines if this node has a side-effect.
|
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
Invoke |
replaceWithInvoke()
Replaces this node with an invoke of the target method.
|
void |
setStateAfter(FrameState x)
Sets the
FrameState corresponding to the state of the JVM after execution of this
node. |
FrameState |
stateAfter()
Gets the
FrameState corresponding to the state of the JVM after execution of this
node. |
protected void |
verifyStamp() |
exceptionEdge, getPrimarySuccessor, getProfileData, getSuccessorCount, killExceptionEdge, next, probability, replaceWithNonThrowing, setExceptionEdge, setNext, setProbabilitysuccessorProbabilitiesasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceapplyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, 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, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitassertArgumentCount, getArgument, getArgumentCount, lower, lowerReplacement, setBciasFixedNodeOrNull, updateInliningLogAfterClone, updateInliningLogAfterRegisterstatesasFixedNodeasNodeasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillpublic static final NodeClass<MacroWithExceptionNode> TYPE
protected NodeInputList<ValueNode> arguments
protected FrameState stateAfter
protected final int bci
protected final ResolvedJavaMethod callerMethod
protected final ResolvedJavaMethod targetMethod
protected final CallTargetNode.InvokeKind invokeKind
protected final StampPair returnStamp
protected MacroWithExceptionNode(NodeClass<? extends MacroWithExceptionNode> c, MacroNode.MacroParams p)
public boolean inferStamp()
ValueNodeValueNode if they need to recompute
their stamp if their inputs change. A typical implementation will compute the stamp and pass
it to ValueNode.updateStamp(Stamp), whose return value can be used as the result of this
method.inferStamp in class ValueNodeprotected void verifyStamp()
public ResolvedJavaMethod getContextMethod()
InvokablegetContextMethod in interface Invokablepublic NodeInputList<ValueNode> getArguments()
MacroInvokablegetArguments in interface MacroInvokablepublic int bci()
bci in interface DeoptBciSupplierpublic ResolvedJavaMethod getTargetMethod()
getTargetMethod in interface Invokablepublic CallTargetNode.InvokeKind getInvokeKind()
getInvokeKind in interface MacroInvokableprotected void afterClone(Node other)
afterClone in class Nodepublic Invoke replaceWithInvoke()
MacroInvokablereplaceWithInvoke in interface MacroInvokableInvokepublic InvokeWithExceptionNode createInvoke(Node oldResult)
MacroWithExceptionNode.getTargetMethod() associated with this node. The exception
edge of the result is not set by this function. This node is not modified.oldResult - represents the result of this node in the MacroWithExceptionNode.stateAfter(). Usually, it
is this, but if this node has already been replaced it might be a
different one.public FrameState stateAfter()
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.stateAfter in interface StateSplitpublic void setStateAfter(FrameState x)
StateSplitFrameState corresponding to the state of the JVM after execution of this
node.setStateAfter in interface StateSplitpublic final boolean hasSideEffect()
StateSplitFrameState nodes.hasSideEffect in interface StateSplitpublic org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKillFIXME: make this final once [GR-32638] is fixed