#[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 FunctionDebugMetaThe 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
impl DebugFrameEntry
Sourcepub const META_OFFSET: i32
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.
pub const VALUES_OFFSET: i32
Sourcepub const fn empty() -> DebugFrameEntry
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
impl Clone for DebugFrameEntry
Source§fn clone(&self) -> DebugFrameEntry
fn clone(&self) -> DebugFrameEntry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more