Class RootNode

java.lang.Object
com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.RootNode
All Implemented Interfaces:
NodeInterface, Cloneable

public abstract class RootNode extends Node
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).
  • Constructor Details

  • Method Details

    • copy

      public Node copy()
      Description copied from class: Node
      Creates a shallow copy of this node.
      Overrides:
      copy in class Node
      Returns:
      the new copy
    • isCloningAllowed

      public boolean isCloningAllowed()
      Returns true if this RootNode is allowed to be cloned. The runtime system might decide to create deep copies of the RootNode in order to gather context sensitive profiling feedback. The default implementation returns false. Guest language specific implementations may want to return true here to indicate that gathering call site specific profiling information might make sense for this RootNode .
      Returns:
      true if cloning is allowed else false.
    • 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

      public abstract Object execute(VirtualFrame frame)
      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

      public final RootCallTarget getCallTarget()
    • getFrameDescriptor

      public final FrameDescriptor getFrameDescriptor()
    • setCallTarget

      public final void setCallTarget(RootCallTarget callTarget)
    • getExecutionContext

      public ExecutionContext getExecutionContext()
      Returns the ExecutionContext associated with this RootNode. This allows the correct ExecutionContext to be determined for a RootNode (and so also for a RootCallTarget and a FrameInstance obtained from the call stack) without prior knowledge of the language it has come from. Used for instance to determine the language of a RootNode:
       
       rootNode.getExecutionContext().getLanguageShortName();
        
      Returns null by default.
    • getCompilerOptions

      public CompilerOptions getCompilerOptions()
      Get compiler options specific to this RootNode.
    • applyInstrumentation

      public void applyInstrumentation()
      Apply all registered instances of ASTProber to 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.

      See Also: