public interface TruffleRuntime
| Modifier and Type | Method and Description |
|---|---|
Assumption |
createAssumption()
Creates a new assumption object that can be checked and invalidated.
|
Assumption |
createAssumption(java.lang.String name)
Creates a new assumption object with a given name that can be checked and invalidated.
|
RootCallTarget |
createCallTarget(RootNode rootNode)
Creates a new call target for a given root node.
|
CompilerOptions |
createCompilerOptions()
Creates an object which allows you to test for support of and set options specific for this
runtime.
|
DirectCallNode |
createDirectCallNode(CallTarget target)
Creates a new runtime specific version of
DirectCallNode. |
IndirectCallNode |
createIndirectCallNode()
Creates a new runtime specific version of
IndirectCallNode. |
LoopNode |
createLoopNode(RepeatingNode body)
Experimental API.
|
MaterializedFrame |
createMaterializedFrame(java.lang.Object[] arguments)
Creates a new materialized frame object that can be used to store values.
|
MaterializedFrame |
createMaterializedFrame(java.lang.Object[] arguments,
FrameDescriptor frameDescriptor)
Creates a new materialized frame object with the given frame descriptor that can be used to
store values.
|
VirtualFrame |
createVirtualFrame(java.lang.Object[] arguments,
FrameDescriptor frameDescriptor)
Creates a new virtual frame object that can be used to store values and is potentially
optimizable by the runtime.
|
FrameInstance |
getCallerFrame()
Accesses the caller frame.
|
java.util.Collection<RootCallTarget> |
getCallTargets()
Returns a list of all still referenced
RootCallTarget instances that were created
using createCallTarget(RootNode). |
<T> T |
getCapability(java.lang.Class<T> capability)
Requests a capability from the runtime.
|
FrameInstance |
getCurrentFrame()
Accesses the current frame, i.e., the frame of the closest
CallTarget. |
java.lang.String |
getName()
Name describing this runtime implementation for debugging purposes.
|
<T> T |
iterateFrames(FrameInstanceVisitor<T> visitor)
Accesses the current stack, i.e., the contents of the
Frames and the associated
CallTargets. |
void |
notifyTransferToInterpreter()
Internal API method.
|
java.lang.String getName()
RootCallTarget createCallTarget(RootNode rootNode)
rootNode - the root node whose
RootNode.execute(com.oracle.truffle.api.frame.VirtualFrame) method
represents the entry pointDirectCallNode createDirectCallNode(CallTarget target)
DirectCallNode.target - the direct CallTarget to callLoopNode createLoopNode(RepeatingNode body)
IndirectCallNode createIndirectCallNode()
IndirectCallNode.Assumption createAssumption()
Assumption createAssumption(java.lang.String name)
name - the name for the new assumptionVirtualFrame createVirtualFrame(java.lang.Object[] arguments, FrameDescriptor frameDescriptor)
MaterializedFrame createMaterializedFrame(java.lang.Object[] arguments)
MaterializedFrame createMaterializedFrame(java.lang.Object[] arguments, FrameDescriptor frameDescriptor)
frameDescriptor - the frame descriptor describing this frame's valuesCompilerOptions createCompilerOptions()
<T> T iterateFrames(FrameInstanceVisitor<T> visitor)
Frames and the associated
CallTargets. Iteration starts at the caller frame, i.e., it does not include the
current frame.
Iteration continues as long as FrameInstanceVisitor.visitFrame(com.oracle.truffle.api.frame.FrameInstance), which is invoked for
every FrameInstance, returns null. Any non-null result of the visitor indicates that
frame iteration should stop.visitor - the visitor that is called for every matching frame.FrameInstance getCallerFrame()
iterateFrames(com.oracle.truffle.api.frame.FrameInstanceVisitor<T>).FrameInstance getCurrentFrame()
CallTarget. It is
important to note that this FrameInstance supports only slow path access.<T> T getCapability(java.lang.Class<T> capability)
capability - the type of the interface representing the capabilitynull if the runtime does not offer itjava.util.Collection<RootCallTarget> getCallTargets()
RootCallTarget instances that were created
using createCallTarget(RootNode).void notifyTransferToInterpreter()