public final class OptimizedDirectCallNode extends com.oracle.truffle.api.nodes.DirectCallNode implements MaterializedFrameNotify
CallTarget that can be optimized by Graal.| Modifier and Type | Field and Description |
|---|---|
private int |
callCount |
private boolean |
inliningForced |
private com.oracle.truffle.api.frame.FrameInstance.FrameAccess |
outsideFrameAccess |
private GraalTruffleRuntime |
runtime |
private OptimizedCallTarget |
splitCallTarget |
private TruffleSplittingStrategy |
splittingStrategy |
| Constructor and Description |
|---|
OptimizedDirectCallNode(GraalTruffleRuntime runtime,
OptimizedCallTarget target) |
| Modifier and Type | Method and Description |
|---|---|
private void |
afterInterpreterCall(Object result) |
Object |
call(com.oracle.truffle.api.frame.VirtualFrame frame,
Object[] arguments) |
static Object |
callProxy(MaterializedFrameNotify notify,
com.oracle.truffle.api.CallTarget callTarget,
com.oracle.truffle.api.frame.VirtualFrame frame,
Object[] arguments,
boolean direct) |
boolean |
cloneCallTarget() |
void |
forceInlining() |
int |
getCallCount() |
OptimizedCallTarget |
getCallTarget() |
OptimizedCallTarget |
getClonedCallTarget() |
OptimizedCallTarget |
getCurrentCallTarget() |
com.oracle.truffle.api.frame.FrameInstance.FrameAccess |
getOutsideFrameAccess() |
void |
installSplitCallTarget(OptimizedCallTarget newTarget)
Used by the splitting strategy to install new targets.
|
boolean |
isCallTargetCloningAllowed() |
boolean |
isInlinable() |
boolean |
isInliningForced() |
private void |
onInterpreterCall(Object[] arguments) |
void |
setOutsideFrameAccess(com.oracle.truffle.api.frame.FrameInstance.FrameAccess outsideFrameAccess) |
create, getCurrentRootNode, isCallTargetCloned, isInlined, toStringaccept, adoptChildren, assignSourceSection, atomic, atomic, clearSourceSection, clone, copy, createWrapperNode, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLanguage, getParent, getRootNode, getSourceSection, insert, insert, isInstrumentable, isSafelyReplaceableBy, onReplace, probe, replace, replaceprivate int callCount
private boolean inliningForced
private OptimizedCallTarget splitCallTarget
private com.oracle.truffle.api.frame.FrameInstance.FrameAccess outsideFrameAccess
private final TruffleSplittingStrategy splittingStrategy
private final GraalTruffleRuntime runtime
public OptimizedDirectCallNode(GraalTruffleRuntime runtime, OptimizedCallTarget target)
public Object call(com.oracle.truffle.api.frame.VirtualFrame frame, Object[] arguments)
call in class com.oracle.truffle.api.nodes.DirectCallNodeprivate void afterInterpreterCall(Object result)
public static Object callProxy(MaterializedFrameNotify notify, com.oracle.truffle.api.CallTarget callTarget, com.oracle.truffle.api.frame.VirtualFrame frame, Object[] arguments, boolean direct)
public boolean isInlinable()
isInlinable in class com.oracle.truffle.api.nodes.DirectCallNodepublic void forceInlining()
forceInlining in class com.oracle.truffle.api.nodes.DirectCallNodepublic boolean isInliningForced()
isInliningForced in class com.oracle.truffle.api.nodes.DirectCallNodepublic com.oracle.truffle.api.frame.FrameInstance.FrameAccess getOutsideFrameAccess()
getOutsideFrameAccess in interface MaterializedFrameNotifypublic void setOutsideFrameAccess(com.oracle.truffle.api.frame.FrameInstance.FrameAccess outsideFrameAccess)
setOutsideFrameAccess in interface MaterializedFrameNotifypublic boolean isCallTargetCloningAllowed()
isCallTargetCloningAllowed in class com.oracle.truffle.api.nodes.DirectCallNodepublic OptimizedCallTarget getCallTarget()
getCallTarget in class com.oracle.truffle.api.nodes.DirectCallNodepublic int getCallCount()
public OptimizedCallTarget getCurrentCallTarget()
getCurrentCallTarget in class com.oracle.truffle.api.nodes.DirectCallNodepublic OptimizedCallTarget getClonedCallTarget()
getClonedCallTarget in class com.oracle.truffle.api.nodes.DirectCallNodeprivate void onInterpreterCall(Object[] arguments)
public void installSplitCallTarget(OptimizedCallTarget newTarget)
public boolean cloneCallTarget()
cloneCallTarget in class com.oracle.truffle.api.nodes.DirectCallNode