com.oracle.truffle.api.impl

## Class DefaultDirectCallNode

- java.lang.Object
- - com.oracle.truffle.api.nodes.Node
  - - com.oracle.truffle.api.nodes.DirectCallNode
    - - com.oracle.truffle.api.impl.DefaultDirectCallNode

All Implemented Interfaces:
  NodeInterface, java.lang.Cloneable

    public final class DefaultDirectCallNode
    extends DirectCallNode

This is runtime specific API. Do not use in a guest language.

### Nested Class Summary

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

`Node.Child, Node.Children`

### Field Summary

### Fields inherited from class com.oracle.truffle.api.nodes.DirectCallNode

`callTarget`

### Constructor Summary

Constructors
Constructor and Description
`DefaultDirectCallNode(CallTarget target)`

### Method Summary

Methods
`java.lang.Object` `call(VirtualFrame frame, java.lang.Object[] arguments)` Calls the inner `CallTarget` returned by `DirectCallNode.getCurrentCallTarget()`.
`boolean` `cloneCallTarget()` Clones the `CallTarget` instance returned by `DirectCallNode.getCallTarget()` in an uninitialized state for this `DirectCallNode`.
`void` `forceInlining()` Enforces the runtime system to inline the `CallTarget` at this call site.
`CallTarget` `getClonedCallTarget()` Returns the split `CallTarget` if this call site's `CallTarget` is cloned.
`boolean` `isCallTargetCloningAllowed()` Returns `true` if the runtime system supports cloning and the `RootNode` returns `true` in `RootNode.isCloningAllowed()`.
`boolean` `isInlinable()` Returns `true` if the underlying runtime system supports inlining for the `CallTarget` in this `DirectCallNode`.
`boolean` `isInliningForced()` Returns `true` if the `CallTarget` is forced to be inlined.

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

`getCallTarget, getCurrentCallTarget, getCurrentRootNode, isCallTargetCloned, isInlined, toString`

### 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`

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

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

### Constructor Detail

#### DefaultDirectCallNode

    public DefaultDirectCallNode(CallTarget target)

### Method Detail

#### call

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

Description copied from class: `DirectCallNode`
Calls the inner `CallTarget` returned by `DirectCallNode.getCurrentCallTarget()`.

Specified by:
  `call` in class `DirectCallNode`
  `arguments` - the arguments that should be passed to the callee
Returns:
  the return result of the call

#### forceInlining

    public void forceInlining()

Description copied from class: `DirectCallNode`
Enforces the runtime system to inline the `CallTarget` at this call site. If the runtime system does not support inlining or it is already inlined this method has no effect. The runtime system may decide to not inline calls which were forced to inline.

Specified by:
  `forceInlining` in class `DirectCallNode`

#### isInliningForced

    public boolean isInliningForced()

Description copied from class: `DirectCallNode`
Returns `true` if the `CallTarget` is forced to be inlined. A `DirectCallNode` can either be inlined manually by invoking `DirectCallNode.forceInlining()` or by the runtime system which may at any point decide to inline.

Specified by:
  `isInliningForced` in class `DirectCallNode`
Returns:
  true if this method was inlined else false.

#### getClonedCallTarget

    public CallTarget getClonedCallTarget()

Description copied from class: `DirectCallNode`
Returns the split `CallTarget` if this call site's `CallTarget` is cloned.

Specified by:
  `getClonedCallTarget` in class `DirectCallNode`
Returns:
  the split `CallTarget`

#### cloneCallTarget

    public boolean cloneCallTarget()

Description copied from class: `DirectCallNode`
Clones the `CallTarget` instance returned by `DirectCallNode.getCallTarget()` in an uninitialized state for this `DirectCallNode`. This can be sensible to gather call site sensitive profiling information for this `DirectCallNode`. If `DirectCallNode.isCallTargetCloningAllowed()` returns `false` this method has no effect and returns `false`.

Specified by:
  `cloneCallTarget` in class `DirectCallNode`

#### isCallTargetCloningAllowed

    public boolean isCallTargetCloningAllowed()

Description copied from class: `DirectCallNode`
Returns `true` if the runtime system supports cloning and the `RootNode` returns `true` in `RootNode.isCloningAllowed()`.

Specified by:
  `isCallTargetCloningAllowed` in class `DirectCallNode`
Returns:
  `true` if the target is allowed to be cloned.

#### isInlinable

    public boolean isInlinable()

Description copied from class: `DirectCallNode`
Returns `true` if the underlying runtime system supports inlining for the `CallTarget` in this `DirectCallNode`.

Specified by:
  `isInlinable` in class `DirectCallNode`
Returns:
  true if inlining is supported.