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, toString
accept, 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, replace
private 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.DirectCallNode
private 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.DirectCallNode
public void forceInlining()
forceInlining
in class com.oracle.truffle.api.nodes.DirectCallNode
public boolean isInliningForced()
isInliningForced
in class com.oracle.truffle.api.nodes.DirectCallNode
public com.oracle.truffle.api.frame.FrameInstance.FrameAccess getOutsideFrameAccess()
getOutsideFrameAccess
in interface MaterializedFrameNotify
public void setOutsideFrameAccess(com.oracle.truffle.api.frame.FrameInstance.FrameAccess outsideFrameAccess)
setOutsideFrameAccess
in interface MaterializedFrameNotify
public boolean isCallTargetCloningAllowed()
isCallTargetCloningAllowed
in class com.oracle.truffle.api.nodes.DirectCallNode
public OptimizedCallTarget getCallTarget()
getCallTarget
in class com.oracle.truffle.api.nodes.DirectCallNode
public int getCallCount()
public OptimizedCallTarget getCurrentCallTarget()
getCurrentCallTarget
in class com.oracle.truffle.api.nodes.DirectCallNode
public OptimizedCallTarget getClonedCallTarget()
getClonedCallTarget
in class com.oracle.truffle.api.nodes.DirectCallNode
private void onInterpreterCall(Object[] arguments)
public void installSplitCallTarget(OptimizedCallTarget newTarget)
public boolean cloneCallTarget()
cloneCallTarget
in class com.oracle.truffle.api.nodes.DirectCallNode