pub struct StackToRegister<'a> { /* private fields */ }Expand description
Lower a stack instruction stream to register form.
Strategy: simulate the operand stack with dataflow stack heights so
control-flow joins (match arms, if/else, Unwrap success vs fail) get the
correct register indices. Registers are the frame’s contiguous stack slots
(parameters occupy 0..param_slots, locals and expression temps grow above).
Implementations§
Source§impl<'a> StackToRegister<'a>
impl<'a> StackToRegister<'a>
pub fn new(name: &str, code: &'a [Instruction], consts: &'a [Value]) -> Self
Sourcepub fn with_param_slots(self, param_slots: u16) -> Self
pub fn with_param_slots(self, param_slots: u16) -> Self
Set the frame’s initial stack height: the parameter / this slot count
the chunk was compiled with (see RegChunk::param_slots).
pub fn translate(self) -> RegChunk
Sourcepub fn with_arity(self, arity: usize, required: usize) -> RegChunk
pub fn with_arity(self, arity: usize, required: usize) -> RegChunk
Declare parameter counts (for CallChunk arity checks).
pub fn translate_named(self) -> RegChunk
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for StackToRegister<'a>
impl<'a> !Send for StackToRegister<'a>
impl<'a> !Sync for StackToRegister<'a>
impl<'a> !UnwindSafe for StackToRegister<'a>
impl<'a> Freeze for StackToRegister<'a>
impl<'a> Unpin for StackToRegister<'a>
impl<'a> UnsafeUnpin for StackToRegister<'a>
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