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