Skip to main content

DebugFrameEntry

Struct DebugFrameEntry 

Source
#[repr(C)]
pub struct DebugFrameEntry { pub meta: *const FunctionDebugMeta, pub values: *mut Option<GcRef>, }
Expand description

One live call’s debug frame: which function, and where its value slots are.

This is the whole of what a frame is — everything else about the call is static and lives in FunctionDebugMeta, and the parent frame is the entry below this one on the stack.

Claimed by bumping the DebugFrameStack’s top in the prologue and released by restoring the saved base in the epilogue.

Fields§

§meta: *const FunctionDebugMeta

The static metadata for the function this call is executing.

§values: *mut Option<GcRef>

The base of this call’s run of meta.local_count value slots inside the DebugValueStack.

Implementations§

Source§

impl DebugFrameEntry

Source

pub const META_OFFSET: i32

The byte offsets generated code writes at. Derived from the #[repr(C)] layout, like every other offset the backend emits (Appendix B), so a reorder here is a recompiled constant rather than a silent miscompile.

Source

pub const VALUES_OFFSET: i32

Source

pub const SIZE: i64

The stride the frame stack’s top moves by, per call.

Source

pub const fn empty() -> DebugFrameEntry

The zero value a fresh reservation holds: no function, no values.

A claimed-but-unwritten entry is not a state generated code can be observed in — the prologue’s claim and its two stores are straight-line with nothing between them — so this exists for SlotStack::new, not as a case the snapshot walker handles.

Trait Implementations§

Source§

impl Clone for DebugFrameEntry

Source§

fn clone(&self) -> DebugFrameEntry

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
Source§

impl Copy for DebugFrameEntry

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.