Skip to main content

CallFrame

Struct CallFrame 

Source
pub struct CallFrame {
    pub chunk_idx: usize,
    pub ip: usize,
    pub base: usize,
    pub locals: Vec<Value>,
}
Expand description

one call frame: the function being run, the instruction pointer into its chunk, the base slot where this frame’s locals begin, and the frame’s local slots.

the frame owns its locals vec, which drops when the frame is popped on RETURN. 05-RESEARCH.md describes a per-frame bump arena freed wholesale on return; in v1 the heap’s free list already reclaims slots, so the frame owning its locals (dropped on return) is the whole of the “arena” – a distinct bump region is not required for correctness, and adding one would be dead weight against the free list. a richer arena stays a v2 idea.

derives Clone but not Debuglocals is a Vec<Value> and Value’s locked derive list omits Debug.

Fields§

§chunk_idx: usize

index into Program::chunks – which function this frame runs.

§ip: usize

the instruction pointer: a byte offset into the chunk’s code.

§base: usize

the value-stack index where this frame’s locals[0] conceptually sits. the call machinery (a later commit) uses it to unwind the stack on RETURN.

§locals: Vec<Value>

this frame’s local slots, indexed by GET_LOCAL / SET_LOCAL operands. dropped when the frame is popped.

Trait Implementations§

Source§

impl Clone for CallFrame

Source§

fn clone(&self) -> CallFrame

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more