pulley_interpreter::interp

Struct Vm

Source
pub struct Vm { /* private fields */ }
Available on crate feature interp only.
Expand description

A virtual machine for interpreting Pulley bytecode.

Implementations§

Source§

impl Vm

Source

pub fn new() -> Self

Create a new virtual machine with the default stack size.

Source

pub fn with_stack(stack: Vec<u8>) -> Self

Create a new virtual machine with the given stack.

Source

pub fn state(&self) -> &MachineState

Get a shared reference to this VM’s machine state.

Source

pub fn state_mut(&mut self) -> &mut MachineState

Get an exclusive reference to this VM’s machine state.

Source

pub fn into_stack(self) -> Vec<u8>

Consumer this VM and return its stack storage.

Source

pub unsafe fn call<'a>( &'a mut self, func: NonNull<u8>, args: &[Val], rets: impl IntoIterator<Item = RegType> + 'a, ) -> Result<impl Iterator<Item = Val> + 'a, NonNull<u8>>

Call a bytecode function.

The given func must point to the beginning of a valid Pulley bytecode function.

The given args must match the number and type of arguments that function expects.

The given rets must match the function’s actual return types.

Returns either the resulting values, or the PC at which a trap was raised.

Trait Implementations§

Source§

impl Default for Vm

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Vm

§

impl RefUnwindSafe for Vm

§

impl Send for Vm

§

impl Sync for Vm

§

impl Unpin for Vm

§

impl UnwindSafe for Vm

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.