Enum koto_bytecode::Instruction
source · [−]pub enum Instruction {
Show 77 variants
Error {
message: String,
},
Copy {
target: u8,
source: u8,
},
SetNull {
register: u8,
},
SetBool {
register: u8,
value: bool,
},
SetNumber {
register: u8,
value: i64,
},
LoadFloat {
register: u8,
constant: ConstantIndex,
},
LoadInt {
register: u8,
constant: ConstantIndex,
},
LoadString {
register: u8,
constant: ConstantIndex,
},
LoadNonLocal {
register: u8,
constant: ConstantIndex,
},
ValueExport {
name: u8,
value: u8,
},
Import {
register: u8,
},
MakeTempTuple {
register: u8,
start: u8,
count: u8,
},
TempTupleToTuple {
register: u8,
source: u8,
},
MakeMap {
register: u8,
size_hint: usize,
},
SequenceStart {
register: u8,
size_hint: usize,
},
SequencePush {
sequence: u8,
value: u8,
},
SequencePushN {
sequence: u8,
start: u8,
count: u8,
},
SequenceToList {
sequence: u8,
},
SequenceToTuple {
sequence: u8,
},
Range {
register: u8,
start: u8,
end: u8,
},
RangeInclusive {
register: u8,
start: u8,
end: u8,
},
RangeTo {
register: u8,
end: u8,
},
RangeToInclusive {
register: u8,
end: u8,
},
RangeFrom {
register: u8,
start: u8,
},
RangeFull {
register: u8,
},
MakeIterator {
register: u8,
iterable: u8,
},
SimpleFunction {
register: u8,
arg_count: u8,
size: usize,
},
Function {
register: u8,
arg_count: u8,
capture_count: u8,
instance_function: bool,
variadic: bool,
generator: bool,
arg_is_unpacked_tuple: bool,
size: usize,
},
Capture {
function: u8,
target: u8,
source: u8,
},
Negate {
register: u8,
value: u8,
},
Not {
register: u8,
value: u8,
},
Add {
register: u8,
lhs: u8,
rhs: u8,
},
Subtract {
register: u8,
lhs: u8,
rhs: u8,
},
Multiply {
register: u8,
lhs: u8,
rhs: u8,
},
Divide {
register: u8,
lhs: u8,
rhs: u8,
},
Remainder {
register: u8,
lhs: u8,
rhs: u8,
},
Less {
register: u8,
lhs: u8,
rhs: u8,
},
LessOrEqual {
register: u8,
lhs: u8,
rhs: u8,
},
Greater {
register: u8,
lhs: u8,
rhs: u8,
},
GreaterOrEqual {
register: u8,
lhs: u8,
rhs: u8,
},
Equal {
register: u8,
lhs: u8,
rhs: u8,
},
NotEqual {
register: u8,
lhs: u8,
rhs: u8,
},
Jump {
offset: usize,
},
JumpBack {
offset: usize,
},
JumpIfTrue {
register: u8,
offset: usize,
},
JumpIfFalse {
register: u8,
offset: usize,
},
Call {
result: u8,
function: u8,
frame_base: u8,
arg_count: u8,
},
CallInstance {
result: u8,
function: u8,
frame_base: u8,
arg_count: u8,
instance: u8,
},
Return {
register: u8,
},
Yield {
register: u8,
},
Throw {
register: u8,
},
Size {
register: u8,
value: u8,
},
IterNext {
register: u8,
iterator: u8,
jump_offset: usize,
},
IterNextTemp {
register: u8,
iterator: u8,
jump_offset: usize,
},
IterNextQuiet {
iterator: u8,
jump_offset: usize,
},
TempIndex {
register: u8,
value: u8,
index: i8,
},
SliceFrom {
register: u8,
value: u8,
index: i8,
},
SliceTo {
register: u8,
value: u8,
index: i8,
},
IsTuple {
register: u8,
value: u8,
},
IsList {
register: u8,
value: u8,
},
Index {
register: u8,
value: u8,
index: u8,
},
SetIndex {
register: u8,
index: u8,
value: u8,
},
MapInsert {
register: u8,
key: u8,
value: u8,
},
MetaInsert {
register: u8,
value: u8,
id: MetaKeyId,
},
MetaInsertNamed {
register: u8,
value: u8,
id: MetaKeyId,
name: u8,
},
MetaExport {
id: MetaKeyId,
value: u8,
},
MetaExportNamed {
id: MetaKeyId,
name: u8,
value: u8,
},
Access {
register: u8,
value: u8,
key: ConstantIndex,
},
AccessString {
register: u8,
value: u8,
key: u8,
},
TryStart {
arg_register: u8,
catch_offset: usize,
},
TryEnd,
Debug {
register: u8,
constant: ConstantIndex,
},
CheckType {
register: u8,
type_id: TypeId,
},
CheckSize {
register: u8,
size: usize,
},
StringStart {
register: u8,
size_hint: usize,
},
StringPush {
register: u8,
value: u8,
},
StringFinish {
register: u8,
},
}Expand description
Decoded instructions produced by an InstructionReader for execution in the runtime
For descriptions of each instruction’s purpose, see corresponding Op entries.
Variants
Error
Fields
message: StringCopy
SetNull
Fields
register: u8SetBool
SetNumber
LoadFloat
LoadInt
LoadString
LoadNonLocal
ValueExport
Import
Fields
register: u8MakeTempTuple
TempTupleToTuple
MakeMap
SequenceStart
SequencePush
SequencePushN
SequenceToList
Fields
sequence: u8SequenceToTuple
Fields
sequence: u8Range
RangeInclusive
RangeTo
RangeToInclusive
RangeFrom
RangeFull
Fields
register: u8MakeIterator
SimpleFunction
Function
Fields
register: u8arg_count: u8capture_count: u8instance_function: boolvariadic: boolgenerator: boolarg_is_unpacked_tuple: boolsize: usizeCapture
Negate
Not
Add
Subtract
Multiply
Divide
Remainder
Less
LessOrEqual
Greater
GreaterOrEqual
Equal
NotEqual
Jump
Fields
offset: usizeJumpBack
Fields
offset: usizeJumpIfTrue
JumpIfFalse
Call
CallInstance
Return
Fields
register: u8Yield
Fields
register: u8Throw
Fields
register: u8Size
IterNext
IterNextTemp
IterNextQuiet
TempIndex
SliceFrom
SliceTo
IsTuple
IsList
Index
SetIndex
MapInsert
MetaInsert
MetaInsertNamed
MetaExport
MetaExportNamed
Access
AccessString
TryStart
TryEnd
Debug
CheckType
CheckSize
StringStart
StringPush
StringFinish
Fields
register: u8Trait Implementations
sourceimpl Debug for Instruction
impl Debug for Instruction
Auto Trait Implementations
impl RefUnwindSafe for Instruction
impl Send for Instruction
impl Sync for Instruction
impl Unpin for Instruction
impl UnwindSafe for Instruction
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more