Class IndirectCallNode

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

public abstract class IndirectCallNode extends Node
Represents an indirect call to a CallTarget. Indirect calls are calls for which the CallTarget may change dynamically for each consecutive call. This part of the Truffle API enables the runtime system to perform additional optimizations on indirect calls.

Please note: This class is not intended to be sub classed by guest language implementations.

See DirectCallNode for faster calls with a constantly known CallTarget.

Since:
0.8 or earlier
  • Constructor Details

    • IndirectCallNode

      protected IndirectCallNode()
      Constructor for implementation subclasses.
      Since:
      0.8 or earlier
  • Method Details

    • call

      public abstract Object call(CallTarget target, Object... arguments)
      Performs an indirect call to the given CallTarget target with the provided arguments.
      Parameters:
      target - the CallTarget to call
      arguments - the arguments to provide
      Returns:
      the return value of the call
      Since:
      0.23
    • create

      public static IndirectCallNode create()
      Creates cached indirect call node using bytecode index -1.
      Since:
      0.8 or earlier
    • getUncached

      public static IndirectCallNode getUncached()
      Returns an uncached version of an indirect call node. Uncached versions of an indirect call node use the current encapsulating node as source location.
      Since:
      19.0