Package com.oracle.truffle.api
Interface TruffleRuntime
- All Known Implementing Classes:
DefaultTruffleRuntime
public interface TruffleRuntime
Interface representing a Truffle runtime object. The runtime is responsible for creating call
targets and performing optimizations for them.
-
Method Summary
Modifier and TypeMethodDescriptionCreates a new assumption object that can be checked and invalidated.createAssumption
(String name) Creates a new assumption object with a given name that can be checked and invalidated.createCallTarget
(RootNode rootNode) Creates a new call target for a given root node.Creates an object which allows you to test for support of and set options specific for this runtime.createDirectCallNode
(CallTarget target) Creates a new runtime specific version ofDirectCallNode
.Creates a new runtime specific version ofIndirectCallNode
.createLoopNode
(RepeatingNode body) Experimental API.createMaterializedFrame
(Object[] arguments) Creates a new materialized frame object that can be used to store values.createMaterializedFrame
(Object[] arguments, FrameDescriptor frameDescriptor) Creates a new materialized frame object with the given frame descriptor that can be used to store values.createVirtualFrame
(Object[] arguments, FrameDescriptor frameDescriptor) Creates a new virtual frame object that can be used to store values and is potentially optimizable by the runtime.Accesses the caller frame.Returns a list of all still referencedRootCallTarget
instances that were created usingcreateCallTarget(RootNode)
.<T> T
getCapability
(Class<T> capability) Requests a capability from the runtime.Accesses the current frame, i.e., the frame of the closestCallTarget
.getName()
Name describing this runtime implementation for debugging purposes.<T> T
iterateFrames
(FrameInstanceVisitor<T> visitor) Accesses the current stack, i.e., the contents of theFrame
s and the associatedCallTarget
s.void
Internal API method.
-
Method Details
-
getName
String getName()Name describing this runtime implementation for debugging purposes.- Returns:
- the name as a String
-
createCallTarget
Creates a new call target for a given root node.- Parameters:
rootNode
- the root node whoseRootNode.execute(com.oracle.truffle.api.frame.VirtualFrame)
method represents the entry point- Returns:
- the new call target object
-
createDirectCallNode
Creates a new runtime specific version ofDirectCallNode
.- Parameters:
target
- the directCallTarget
to call- Returns:
- the new call node
-
createLoopNode
Experimental API. May change without notice. -
createIndirectCallNode
IndirectCallNode createIndirectCallNode()Creates a new runtime specific version ofIndirectCallNode
.- Returns:
- the new call node
-
createAssumption
Assumption createAssumption()Creates a new assumption object that can be checked and invalidated.- Returns:
- the newly created assumption object
-
createAssumption
Creates a new assumption object with a given name that can be checked and invalidated.- Parameters:
name
- the name for the new assumption- Returns:
- the newly created assumption object
-
createVirtualFrame
Creates a new virtual frame object that can be used to store values and is potentially optimizable by the runtime.- Returns:
- the newly created virtual frame object
-
createMaterializedFrame
Creates a new materialized frame object that can be used to store values.- Returns:
- the newly created materialized frame object
-
createMaterializedFrame
Creates a new materialized frame object with the given frame descriptor that can be used to store values.- Parameters:
frameDescriptor
- the frame descriptor describing this frame's values- Returns:
- the newly created materialized frame object
-
createCompilerOptions
CompilerOptions createCompilerOptions()Creates an object which allows you to test for support of and set options specific for this runtime.- Returns:
- the newly created compiler options object
-
iterateFrames
Accesses the current stack, i.e., the contents of theFrame
s and the associatedCallTarget
s. Iteration starts at the caller frame, i.e., it does not include the current frame. Iteration continues as long asFrameInstanceVisitor.visitFrame(com.oracle.truffle.api.frame.FrameInstance)
, which is invoked for everyFrameInstance
, returns null. Any non-null result of the visitor indicates that frame iteration should stop.- Parameters:
visitor
- the visitor that is called for every matching frame.- Returns:
- the last result returned by the visitor (which is non-null to indicate that iteration should stop), or null if the whole stack was iterated.
-
getCallerFrame
FrameInstance getCallerFrame()Accesses the caller frame. This is a convenience method that returns the first frame that is passed to the visitor ofiterateFrames(com.oracle.truffle.api.frame.FrameInstanceVisitor<T>)
. -
getCurrentFrame
FrameInstance getCurrentFrame()Accesses the current frame, i.e., the frame of the closestCallTarget
. It is important to note that thisFrameInstance
supports only slow path access. -
getCapability
Requests a capability from the runtime.- Parameters:
capability
- the type of the interface representing the capability- Returns:
- an implementation of the capability or
null
if the runtime does not offer it
-
getCallTargets
Collection<RootCallTarget> getCallTargets()Returns a list of all still referencedRootCallTarget
instances that were created usingcreateCallTarget(RootNode)
. -
notifyTransferToInterpreter
void notifyTransferToInterpreter()Internal API method. Do not use.
-