Package com.oracle.truffle.api.bytecode
package com.oracle.truffle.api.bytecode
The Bytecode DSL is a DSL and runtime support component of Truffle that makes it easier to
implement bytecode interpreters. Start
here
.- Since:
- 24.2
-
ClassDescriptionParent class for a bytecode builder generated by the Bytecode DSL.The configuration to use while generating bytecode.Builder to generate a
BytecodeConfig
programmatically.Abstract class implemented by generated code to encodeBytecodeConfig
data.Accessor class used to abstract away frame and bytecode array accesses in the generated code.Class representing an exception thrown by aBytecodeBuilder
when the program cannot be encoded, for example, when the bytecode exceeds the maximum addressable bytecode size.Abstract definition of a label.Abstract definition of a local variable in the interpreter.A materialized bytecode location.Represents the current bytecode for a Bytecode DSL root node.BytecodeParser<T extends BytecodeBuilder>Functional interface containing a method to parse one or more nodes using aBytecodeBuilder
.Base interface to be implemented by the bytecode root node of a Bytecode DSL interpreter.ABytecodeRootNodes
instance encapsulates one or more bytecode root nodes produced from a single parse.Contains code to support Bytecode DSL interpreters.Special list to weakly keep track of clones.Represents the tier of a givenBytecodeNode
.Defines a constant operand for an operation.Repeat annotation forConstantOperand
.Representation of a continuation closure, consisting of a resumableRootNode
, the interpreter state, and a yielded result.Abstract class representing the root node for a continuation.Defines an exceptional epilog operation.Defines a return epilog operation.Introspection class modeling the meta-information of an exception handler in a bytecode interpreter.Represents the kind of the exception handler.Forces quickening for anOperation
specialization
.Repeat annotation forForceQuickening
.Generates a bytecode interpreter using the Bytecode DSL.This annotation should only be used for testing to generate multiple variants of the interpreter with slightly differentconfigurations
.The annotation used to declare a variant.Represents metadata for an instruction in a bytecode node.Represents metadata for an argument of an instruction in a bytecode node.Represents a branch profile.Represents the kind of anInstruction.Argument
.Instrumentations are operations that can be dynamically enabled at runtime.Operation parameter that allows an operation to get, set, and clear the value of a local.Operation parameter that allows an operation to get, set, or clear locals declared in a contiguous range.Introspection class modeling a local variable and its liveness info in a bytecode interpreter.Operation parameter that allows an operation to get, set, and clear the value of a local from a materialized frame of the current root node or an outer root node.Declares an operation.Defines an operation using an existingNode
.Designates aNode
class as eligible for proxying.Repeat annotation forOperationProxy
.Defines a prolog operation that executes before the body of a Root operation.Declares a short-circuiting operation.Defines the behaviour of aShortCircuitOperation
.Repeat annotation forShortCircuitOperation
.Introspection class modeling source section information for a range of bytecodes.Introspection class modeling a tree ofSourceInformation
instances.Logical tree representation of theTag
operations of a bytecode program.Class that implements tag treeNodeLibrary
dispatch for tag tree items.Annotation indicating a parameter that takes zero or more values.