Package com.oracle.truffle.api.nodes
Class RootNode
java.lang.Object
com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.RootNode
- All Implemented Interfaces:
NodeInterface,Cloneable
A root node is a node with a method to execute it given only a frame as a parameter. Therefore, a
root node can be used to create a call target using
TruffleRuntime.createCallTarget(RootNode).-
Nested Class Summary
Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node
Node.Child, Node.Children -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedRootNode()protectedRootNode(SourceSection sourceSection) protectedRootNode(SourceSection sourceSection, FrameDescriptor frameDescriptor) -
Method Summary
Modifier and TypeMethodDescriptionvoidApply all registered instances ofASTProberto the AST, if any, held by this root node.copy()Creates a shallow copy of this node.abstract Objectexecute(VirtualFrame frame) Executes this function using the specified frame and returns the result value.final RootCallTargetGet compiler options specific to thisRootNode.Returns theExecutionContextassociated with thisRootNode.final FrameDescriptorbooleanReturnstrueif thisRootNodeis allowed to be cloned.final voidreportLoopCount(int count) Reports the execution count of a loop that is a child of this node.final voidsetCallTarget(RootCallTarget callTarget) Methods inherited from class com.oracle.truffle.api.nodes.Node
accept, adoptChildren, assignSourceSection, atomic, atomic, clearSourceSection, clone, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLanguage, getParent, getRootNode, getSourceSection, insert, insert, isReplaceable, onAdopt, onReplace, replace, replace, toString
-
Constructor Details
-
RootNode
protected RootNode() -
RootNode
-
RootNode
-
-
Method Details
-
copy
Description copied from class:NodeCreates a shallow copy of this node. -
isCloningAllowed
public boolean isCloningAllowed()Returnstrueif thisRootNodeis allowed to be cloned. The runtime system might decide to create deep copies of theRootNodein order to gather context sensitive profiling feedback. The default implementation returnsfalse. Guest language specific implementations may want to returntruehere to indicate that gathering call site specific profiling information might make sense for thisRootNode.- Returns:
trueif cloning is allowed elsefalse.
-
reportLoopCount
public final void reportLoopCount(int count) Reports the execution count of a loop that is a child of this node. The optimization heuristics can use the loop count to guide compilation and inlining. -
execute
Executes this function using the specified frame and returns the result value.- Parameters:
frame- the frame of the currently executing guest language method- Returns:
- the value of the execution
-
getCallTarget
-
getFrameDescriptor
-
setCallTarget
-
getExecutionContext
Returns theExecutionContextassociated with thisRootNode. This allows the correctExecutionContextto be determined for aRootNode(and so also for aRootCallTargetand aFrameInstanceobtained from the call stack) without prior knowledge of the language it has come from. Used for instance to determine the language of aRootNode:
ReturnsrootNode.getExecutionContext().getLanguageShortName();nullby default. -
getCompilerOptions
Get compiler options specific to thisRootNode. -
applyInstrumentation
public void applyInstrumentation()Apply all registered instances ofASTProberto the AST, if any, held by this root node. This can only be done once the AST is complete, notably once all parent pointers are correctly assigned. But it also must be done before any AST cloning or execution.If this is not done, then the AST will not be subject to debugging or any other instrumentation-supported tooling.
Implementations should ensure that instrumentation is never applied more than once to an AST, as this is not guaranteed to be error-free.
-