public final class CFunctionPrologueNode
extends org.graalvm.compiler.nodes.FixedWithNextNode
implements org.graalvm.compiler.nodes.spi.Lowerable, org.graalvm.compiler.nodes.memory.MemoryCheckpoint.Single, 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.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() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
afterClone(org.graalvm.compiler.graph.Node other) |
static void |
cFunctionPrologue() |
org.graalvm.word.LocationIdentity |
getLocationIdentity() |
CFunctionPrologueMarker |
getMarker() |
void |
lower(org.graalvm.compiler.nodes.spi.LoweringTool tool) |
asConstant, asJavaConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isJavaConstant, isNullConstant, replaceAtUsages, setStamp, stamp, updateStampapplyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageAt, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasUsages, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionpublic 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.Nodepublic CFunctionPrologueMarker getMarker()
public void lower(org.graalvm.compiler.nodes.spi.LoweringTool tool)
lower in interface org.graalvm.compiler.nodes.spi.Lowerablepublic org.graalvm.word.LocationIdentity getLocationIdentity()
getLocationIdentity in interface org.graalvm.compiler.nodes.memory.MemoryCheckpoint.Singlepublic static void cFunctionPrologue()