pub struct Vm { /* private fields */ }
Available on crate feature
interp
only.Expand description
A virtual machine for interpreting Pulley bytecode.
Implementations§
Source§impl Vm
impl Vm
Sourcepub fn with_stack(stack: Vec<u8>) -> Self
pub fn with_stack(stack: Vec<u8>) -> Self
Create a new virtual machine with the given stack.
Sourcepub fn state(&self) -> &MachineState
pub fn state(&self) -> &MachineState
Get a shared reference to this VM’s machine state.
Sourcepub fn state_mut(&mut self) -> &mut MachineState
pub fn state_mut(&mut self) -> &mut MachineState
Get an exclusive reference to this VM’s machine state.
Sourcepub fn into_stack(self) -> Vec<u8>
pub fn into_stack(self) -> Vec<u8>
Consumer this VM and return its stack storage.
Sourcepub 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>>
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§
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> 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
Mutably borrows from an owned value. Read more