com.oracle.truffle.api.nodes

## Class IndirectCallNode

- java.lang.Object
- - com.oracle.truffle.api.nodes.Node
  - - com.oracle.truffle.api.nodes.IndirectCallNode

All Implemented Interfaces:
  NodeInterface, java.lang.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 Also:
  `for faster calls with a constantly known {@link CallTarget}.`

### Nested Class Summary

### Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node

`Node.Child, Node.Children`

### Constructor Summary

Constructors
Constructor and Description
`IndirectCallNode()`

### Method Summary

Methods
`abstract java.lang.Object` `call(VirtualFrame frame, CallTarget target, java.lang.Object[] arguments)` Performs an indirect call to the given `CallTarget` target with the provided arguments.

### Methods inherited from class com.oracle.truffle.api.nodes.Node

`accept, adoptChildren, assignSourceSection, atomic, atomic, clearSourceSection, clone, copy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLanguage, getParent, getRootNode, getSourceSection, insert, insert, isReplaceable, onAdopt, onReplace, replace, replace, toString`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### IndirectCallNode

    public IndirectCallNode()

### Method Detail

#### call

    public abstract java.lang.Object call(VirtualFrame frame,
                        CallTarget target,
                        java.lang.Object[] arguments)

Performs an indirect call to the given `CallTarget` target with the provided arguments.

Parameters:
  `frame` - the caller frame
  `target` - the `CallTarget` to call
  `arguments` - the arguments to provide
Returns:
  the return value of the call