public final class DefaultDirectCallNode extends DirectCallNode
Node.Child, Node.Children
callTarget
Constructor and Description |
---|
DefaultDirectCallNode(CallTarget target) |
Modifier and Type | Method and Description |
---|---|
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. |
getCallTarget, getCurrentCallTarget, getCurrentRootNode, isCallTargetCloned, isInlined, toString
accept, adoptChildren, assignSourceSection, atomic, atomic, clearSourceSection, clone, copy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLanguage, getParent, getRootNode, getSourceSection, insert, insert, isReplaceable, onAdopt, onReplace, replace, replace
public DefaultDirectCallNode(CallTarget target)
public java.lang.Object call(VirtualFrame frame, java.lang.Object[] arguments)
DirectCallNode
CallTarget
returned by DirectCallNode.getCurrentCallTarget()
.call
in class DirectCallNode
arguments
- the arguments that should be passed to the calleepublic void forceInlining()
DirectCallNode
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.forceInlining
in class DirectCallNode
public boolean isInliningForced()
DirectCallNode
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.isInliningForced
in class DirectCallNode
public CallTarget getClonedCallTarget()
DirectCallNode
CallTarget
if this call site's CallTarget
is cloned.getClonedCallTarget
in class DirectCallNode
CallTarget
public boolean cloneCallTarget()
DirectCallNode
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
.cloneCallTarget
in class DirectCallNode
public boolean isCallTargetCloningAllowed()
DirectCallNode
true
if the runtime system supports cloning and the RootNode
returns true
in RootNode.isCloningAllowed()
.isCallTargetCloningAllowed
in class DirectCallNode
true
if the target is allowed to be cloned.public boolean isInlinable()
DirectCallNode
true
if the underlying runtime system supports inlining for the
CallTarget
in this DirectCallNode
.isInlinable
in class DirectCallNode