[−][src]Enum gluon_vm::types::Instruction
Enum which represent the instructions executed by the virtual machine.
The binary arithmetic instructions pop two values of the stack and then push the result.
Variants
PushInt(VmInt)
Push an integer to the stack
PushByte(u8)
Push a byte to the stack
PushFloat(f64)
Push a float to the stack
PushString(VmIndex)
Push a string to the stack by loading the string at index
in the currently executing
function
PushUpVar(VmIndex)
Push a variable to the stack by loading the upvariable at index
from the currently
executing function
Push(VmIndex)
Push the value at index
Call(VmIndex)
Call a function by passing it args
number of arguments. The function is at the index in
the stack just before the arguments. After the call is all arguments are removed and the
function is replaced by the result of the call.
TailCall(VmIndex)
Tailcalls a function, removing the current stack frame before calling it.
See Call
.
ConstructVariant
Constructs a data value tagged by tag
by taking the top args
values of the stack.
Fields of ConstructVariant
ConstructPolyVariant
Fields of ConstructPolyVariant
NewVariant
Fields of NewVariant
NewRecord
Fields of NewRecord
CloseData
Fields of CloseData
index: VmIndex
Where the record is located
ConstructRecord
Fields of ConstructRecord
ConstructArray(VmIndex)
Constructs an array containing args
values.
GetOffset(VmIndex)
Retrieves the field at offset
of an object at the top of the stack. The result of the
field access replaces the object on the stack.
GetField(VmIndex)
Retrieves the field of a polymorphic record by retrieving the string constant at index
and using that to retrieve lookup the field. The result of the
field access replaces the object on the stack.
Split
Splits a object, pushing all contained values to the stack.
TestTag(VmTag)
Tests if the value at the top of the stack is tagged with tag
. Pushes True
if the tag
matches, otherwise False
TestPolyTag(VmIndex)
Jump(VmIndex)
Jumps to the instruction at index
in the currently executing function.
CJump(VmIndex)
Jumps to the instruction at index
in the currently executing function if True
is at the
top of the stack and pops that value.
Pop(VmIndex)
Pops the top n
values from the stack.
Slide(VmIndex)
Pops the top value from the stack, then pops n
more values, finally the first value is
pushed back to the stack.
MakeClosure
Creates a closure with the function at function_index
of the currently executing function
and upvars
upvariables popped from the top of the stack.
Fields of MakeClosure
NewClosure
Creates a closure with the function at function_index
of the currently executing
function. The closure has room for upvars
upvariables but these are not filled until the
matching call to ClosureClosure
is executed.
Fields of NewClosure
CloseClosure(VmIndex)
Fills the previously allocated closure with n
upvariables.
AddInt
SubtractInt
MultiplyInt
DivideInt
IntLT
IntEQ
AddByte
SubtractByte
MultiplyByte
DivideByte
ByteLT
ByteEQ
AddFloat
SubtractFloat
MultiplyFloat
DivideFloat
FloatLT
FloatEQ
Methods
impl Instruction
[src]
pub fn adjust(&self) -> i32
[src]
Returns by how much the stack is adjusted when executing the instruction self
.
Trait Implementations
impl Copy for Instruction
[src]
impl PartialEq<Instruction> for Instruction
[src]
fn eq(&self, other: &Instruction) -> bool
[src]
fn ne(&self, other: &Instruction) -> bool
[src]
impl Clone for Instruction
[src]
fn clone(&self) -> Instruction
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Debug for Instruction
[src]
Auto Trait Implementations
impl Send for Instruction
impl Sync for Instruction
Blanket Implementations
impl<D, T> FromPtr for T
[src]
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<Choices> CoproductSubsetter for Choices
[src]
type Remainder = Choices
fn subset(
self
) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>
[src]
self
) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>
impl<Source> Sculptor for Source
[src]
impl<T, U, I> LiftInto for T where
U: LiftFrom<T, I>,
[src]
U: LiftFrom<T, I>,
impl<T> Any for T where
T: Any,
[src]
T: Any,