koto_bytecode

Enum Instruction

Source
pub enum Instruction {
Show 81 variants Error { message: String, }, NewFrame { register_count: u8, }, 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: u32, }, SequenceStart { size_hint: u32, }, SequencePush { value: u8, }, SequencePushN { start: u8, count: u8, }, SequenceToList { register: u8, }, SequenceToTuple { register: 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, }, Function { register: u8, arg_count: u8, capture_count: u8, variadic: bool, generator: bool, arg_is_unpacked_tuple: bool, size: u16, }, 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, }, AddAssign { lhs: u8, rhs: u8, }, SubtractAssign { lhs: u8, rhs: u8, }, MultiplyAssign { lhs: u8, rhs: u8, }, DivideAssign { lhs: u8, rhs: u8, }, RemainderAssign { 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: u16, }, JumpBack { offset: u16, }, JumpIfTrue { register: u8, offset: u16, }, JumpIfFalse { register: u8, offset: u16, }, JumpIfNull { register: u8, offset: u16, }, Call { result: u8, function: u8, frame_base: u8, arg_count: u8, }, CallInstance { result: u8, function: u8, instance: u8, frame_base: u8, arg_count: u8, }, Return { register: u8, }, Yield { register: u8, }, Throw { register: u8, }, Size { register: u8, value: u8, }, IterNext { result: Option<u8>, iterator: u8, jump_offset: u16, temporary_output: bool, }, TempIndex { register: u8, value: u8, index: i8, }, SliceFrom { register: u8, value: u8, index: i8, }, SliceTo { register: u8, value: u8, index: i8, }, Index { register: u8, value: u8, index: u8, }, IndexMut { 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: u16, }, TryEnd, Debug { register: u8, constant: ConstantIndex, }, CheckSizeEqual { register: u8, size: usize, }, CheckSizeMin { register: u8, size: usize, }, AssertType { value: u8, allow_null: bool, type_string: ConstantIndex, }, CheckType { value: u8, allow_null: bool, type_string: ConstantIndex, jump_offset: u16, }, StringStart { size_hint: u32, }, StringPush { value: u8, format_options: Option<StringFormatOptions>, }, 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: String
§

NewFrame

Fields

§register_count: u8
§

Copy

Fields

§target: u8
§source: u8
§

SetNull

Fields

§register: u8
§

SetBool

Fields

§register: u8
§value: bool
§

SetNumber

Fields

§register: u8
§value: i64
§

LoadFloat

Fields

§register: u8
§constant: ConstantIndex
§

LoadInt

Fields

§register: u8
§constant: ConstantIndex
§

LoadString

Fields

§register: u8
§constant: ConstantIndex
§

LoadNonLocal

Fields

§register: u8
§constant: ConstantIndex
§

ValueExport

Fields

§name: u8
§value: u8
§

Import

Fields

§register: u8
§

MakeTempTuple

Fields

§register: u8
§start: u8
§count: u8
§

TempTupleToTuple

Fields

§register: u8
§source: u8
§

MakeMap

Fields

§register: u8
§size_hint: u32
§

SequenceStart

Fields

§size_hint: u32
§

SequencePush

Fields

§value: u8
§

SequencePushN

Fields

§start: u8
§count: u8
§

SequenceToList

Fields

§register: u8
§

SequenceToTuple

Fields

§register: u8
§

Range

Fields

§register: u8
§start: u8
§end: u8
§

RangeInclusive

Fields

§register: u8
§start: u8
§end: u8
§

RangeTo

Fields

§register: u8
§end: u8
§

RangeToInclusive

Fields

§register: u8
§end: u8
§

RangeFrom

Fields

§register: u8
§start: u8
§

RangeFull

Fields

§register: u8
§

MakeIterator

Fields

§register: u8
§iterable: u8
§

Function

Fields

§register: u8
§arg_count: u8
§capture_count: u8
§variadic: bool
§generator: bool
§arg_is_unpacked_tuple: bool
§size: u16
§

Capture

Fields

§function: u8
§target: u8
§source: u8
§

Negate

Fields

§register: u8
§value: u8
§

Not

Fields

§register: u8
§value: u8
§

Add

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Subtract

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Multiply

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Divide

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Remainder

Fields

§register: u8
§lhs: u8
§rhs: u8
§

AddAssign

Fields

§lhs: u8
§rhs: u8
§

SubtractAssign

Fields

§lhs: u8
§rhs: u8
§

MultiplyAssign

Fields

§lhs: u8
§rhs: u8
§

DivideAssign

Fields

§lhs: u8
§rhs: u8
§

RemainderAssign

Fields

§lhs: u8
§rhs: u8
§

Less

Fields

§register: u8
§lhs: u8
§rhs: u8
§

LessOrEqual

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Greater

Fields

§register: u8
§lhs: u8
§rhs: u8
§

GreaterOrEqual

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Equal

Fields

§register: u8
§lhs: u8
§rhs: u8
§

NotEqual

Fields

§register: u8
§lhs: u8
§rhs: u8
§

Jump

Fields

§offset: u16
§

JumpBack

Fields

§offset: u16
§

JumpIfTrue

Fields

§register: u8
§offset: u16
§

JumpIfFalse

Fields

§register: u8
§offset: u16
§

JumpIfNull

Fields

§register: u8
§offset: u16
§

Call

Fields

§result: u8
§function: u8
§frame_base: u8
§arg_count: u8
§

CallInstance

Fields

§result: u8
§function: u8
§instance: u8
§frame_base: u8
§arg_count: u8
§

Return

Fields

§register: u8
§

Yield

Fields

§register: u8
§

Throw

Fields

§register: u8
§

Size

Fields

§register: u8
§value: u8
§

IterNext

Fields

§result: Option<u8>
§iterator: u8
§jump_offset: u16
§temporary_output: bool
§

TempIndex

Fields

§register: u8
§value: u8
§index: i8
§

SliceFrom

Fields

§register: u8
§value: u8
§index: i8
§

SliceTo

Fields

§register: u8
§value: u8
§index: i8
§

Index

Fields

§register: u8
§value: u8
§index: u8
§

IndexMut

Fields

§register: u8
§index: u8
§value: u8
§

MapInsert

Fields

§register: u8
§key: u8
§value: u8
§

MetaInsert

Fields

§register: u8
§value: u8
§

MetaInsertNamed

Fields

§register: u8
§value: u8
§name: u8
§

MetaExport

Fields

§value: u8
§

MetaExportNamed

Fields

§name: u8
§value: u8
§

Access

Fields

§register: u8
§value: u8
§

AccessString

Fields

§register: u8
§value: u8
§key: u8
§

TryStart

Fields

§arg_register: u8
§catch_offset: u16
§

TryEnd

§

Debug

Fields

§register: u8
§constant: ConstantIndex
§

CheckSizeEqual

Fields

§register: u8
§size: usize
§

CheckSizeMin

Fields

§register: u8
§size: usize
§

AssertType

Fields

§value: u8
§allow_null: bool
§type_string: ConstantIndex
§

CheckType

Fields

§value: u8
§allow_null: bool
§type_string: ConstantIndex
§jump_offset: u16
§

StringStart

Fields

§size_hint: u32
§

StringPush

Fields

§value: u8
§format_options: Option<StringFormatOptions>
§

StringFinish

Fields

§register: u8

Trait Implementations§

Source§

impl Debug for Instruction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.