pub enum Op {
Show 61 variants
Nil,
True,
False,
Const(u32),
Pop,
Dup,
Swap,
GetLocal(u16),
SetLocal(u16),
GetUpval(u16),
SetUpval(u16),
GetGlobal(u32),
SetGlobal(u32),
NewTable,
SetField(u32),
GetField(u32),
SetIndex,
GetIndex,
TableAppend,
SetList(u16),
Len,
Neg,
Not,
BitNot,
Add,
Sub,
Mul,
Div,
IDiv,
Mod,
Pow,
Concat,
Eq,
NotEq,
Lt,
LtEq,
Gt,
GtEq,
BitAnd,
BitOr,
BitXor,
Shl,
Shr,
Jump(i32),
JumpIf(i32),
JumpIfNot(i32),
JumpIfNotPop(i32),
JumpIfPop(i32),
Call(u8, u8),
CallMethod(u32, u8, u8),
Return(u8),
TailCall(u8),
Closure(u32),
Close(u16),
ForPrep(u16),
ForStep,
ForStepJump(i32),
NumForInit,
NumForStep(i32),
Vararg(u8),
LineInfo(u32),
}Expand description
VM instruction. Operands are embedded to allow the interpreter to avoid secondary table lookups on the hot path.
Variants§
Nil
Push nil.
True
Push true.
False
Push false.
Const(u32)
Push proto.constants[idx].
Pop
Dup
Swap
GetLocal(u16)
SetLocal(u16)
GetUpval(u16)
SetUpval(u16)
GetGlobal(u32)
SetGlobal(u32)
NewTable
SetField(u32)
SetField(kidx): pop val; table = peek; table[const_str] = val.
GetField(u32)
GetField(kidx): pop table; push table[const_str].
SetIndex
SetIndex: pop val, key; table = peek; table[key] = val.
GetIndex
GetIndex: pop key, table; push table[key].
TableAppend
TableAppend: pop val; table = peek; append val to array part.
SetList(u16)
SetList(n): pop n values; table = peek; assign t[1..n].
Len
Neg
Not
BitNot
Add
Sub
Mul
Div
IDiv
Mod
Pow
Concat
Eq
NotEq
Lt
LtEq
Gt
GtEq
BitAnd
BitOr
BitXor
Shl
Shr
Jump(i32)
Relative unconditional jump. ip += offset (can be negative).
JumpIf(i32)
Peek top; if truthy jump (no pop).
JumpIfNot(i32)
Peek top; if falsy jump (no pop).
JumpIfNotPop(i32)
Pop top; if falsy jump — used for short-circuit and.
JumpIfPop(i32)
Pop top; if truthy jump — used for short-circuit or.
Call(u8, u8)
Call(nargs, nret): pop nargs + callee; push nret results (0 = all).
CallMethod(u32, u8, u8)
CallMethod(name_kidx, nargs, nret): obj on stack; method = const_str.
Return(u8)
Return(n): pop n values and return (0 = return all).
TailCall(u8)
Tail-call optimisation.
Closure(u32)
Create a closure from proto.protos[idx], capturing upvalues.
Close(u16)
Close the upvalue at local slot slot.
ForPrep(u16)
Prepare generic-for: push iterator state.
ForStep
Advance generic-for; pop results if exhausted (implied jump offset in
combination with ForStepJump).
ForStepJump(i32)
Like ForStep but with a jump offset for the exhausted case.
NumForInit
Push and validate [start, limit, step] for numeric-for.
NumForStep(i32)
Advance numeric-for; jump by offset if done.
Vararg(u8)
Push n vararg values (0 = all).
LineInfo(u32)
Trait Implementations§
impl StructuralPartialEq for Op
Auto Trait Implementations§
impl Freeze for Op
impl RefUnwindSafe for Op
impl Send for Op
impl Sync for Op
impl Unpin for Op
impl UnsafeUnpin for Op
impl UnwindSafe for Op
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.