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
Frame s and the associated
CallTarget s. |
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)
Frame
s and the associated
CallTarget
s. 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()