public final class CFunctionPrologueNode
extends org.graalvm.compiler.nodes.FixedWithNextNode
implements org.graalvm.compiler.nodes.spi.Lowerable, org.graalvm.compiler.nodes.memory.SingleMemoryKill, org.graalvm.compiler.nodes.debug.ControlFlowAnchored
JavaFrameAnchor
and a thread state
transition
.
It must always be paired with a CFunctionEpilogueNode
. In between the prologue and
epilogue, there must be exactly one InvokeNode
(note that it must not be an invoke that
requires an exception handler, i.e., it must not be an InvokeWithExceptionNode
.
Part of the prologue/epilogue are emitted by the lowering of these nodes using snippets, see
class CFunctionSnippets. Other parts are emitted in the backend when the call instruction is
emitted.org.graalvm.compiler.graph.Node.ConstantNodeParameter, org.graalvm.compiler.graph.Node.EdgeVisitor, org.graalvm.compiler.graph.Node.IndirectCanonicalization, org.graalvm.compiler.graph.Node.InjectedNodeParameter, org.graalvm.compiler.graph.Node.Input, org.graalvm.compiler.graph.Node.NodeInsertionStackTrace, org.graalvm.compiler.graph.Node.NodeIntrinsic, org.graalvm.compiler.graph.Node.NodeIntrinsicFactory, org.graalvm.compiler.graph.Node.OptionalInput, org.graalvm.compiler.graph.Node.Successor, org.graalvm.compiler.graph.Node.ValueNumberable
Modifier and Type | Field and Description |
---|---|
static org.graalvm.compiler.graph.NodeClass<CFunctionPrologueNode> |
TYPE |
Constructor and Description |
---|
CFunctionPrologueNode(int newThreadStatus) |
Modifier and Type | Method and Description |
---|---|
protected void |
afterClone(org.graalvm.compiler.graph.Node other) |
static void |
cFunctionPrologue(int newThreadStatus) |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity() |
CFunctionPrologueMarker |
getMarker() |
int |
getNewThreadStatus() |
asConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, replaceAtUsages, setStamp, stamp, updateStamp
applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, 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, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePosition
public static final org.graalvm.compiler.graph.NodeClass<CFunctionPrologueNode> TYPE
protected void afterClone(org.graalvm.compiler.graph.Node other)
afterClone
in class org.graalvm.compiler.graph.Node
public CFunctionPrologueMarker getMarker()
public org.graalvm.word.LocationIdentity getKilledLocationIdentity()
getKilledLocationIdentity
in interface org.graalvm.compiler.nodes.memory.SingleMemoryKill
public int getNewThreadStatus()
public static void cFunctionPrologue(int newThreadStatus)