pub struct VmSnapshot {
pub index: u64,
pub ip: usize,
pub sp: usize,
pub call_depth: usize,
pub function_id: Option<u16>,
pub function_name: Option<String>,
pub instruction_count: u64,
pub stack_data: Vec<u64>,
pub stack_kinds: Vec<NativeKind>,
pub module_bindings_data: Vec<u64>,
pub module_bindings_kinds: Vec<NativeKind>,
pub reason: CaptureReason,
}Expand description
A snapshot of VM state at a point in time.
WB2.5 retain-on-read. stack_data / module_bindings_data carry
raw 8-byte slot bits; stack_kinds / module_bindings_kinds carry the
parallel-track NativeKind interpretation per slot (ADR-006 §2.7.7).
The manual Clone bumps each element’s refcount via clone_with_kind,
keyed on the parallel-track kind; Drop releases via drop_with_kind
so replaying / evicting a snapshot is refcount-neutral.
Fields§
§index: u64Monotonically increasing snapshot index.
ip: usizeInstruction pointer at time of capture.
sp: usizeStack pointer at time of capture.
call_depth: usizeCall stack depth at time of capture.
function_id: Option<u16>Function being executed (if known).
function_name: Option<String>Function name (if known).
instruction_count: u64Instruction count at time of capture.
stack_data: Vec<u64>Raw 8-byte slot bits for the live stack at capture time
(post-§2.7.7 lockstep with stack_kinds).
stack_kinds: Vec<NativeKind>Parallel NativeKind track for stack_data.
Invariant: stack_data.len() == stack_kinds.len().
module_bindings_data: Vec<u64>Raw 8-byte slot bits for module bindings at capture time
(post-§2.7.7 lockstep with module_bindings_kinds).
module_bindings_kinds: Vec<NativeKind>Parallel NativeKind track for module_bindings_data.
Invariant: module_bindings_data.len() == module_bindings_kinds.len().
reason: CaptureReasonCapture reason for display/debugging.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for VmSnapshot
impl RefUnwindSafe for VmSnapshot
impl Send for VmSnapshot
impl Sync for VmSnapshot
impl Unpin for VmSnapshot
impl UnsafeUnpin for VmSnapshot
impl UnwindSafe for VmSnapshot
Blanket Implementations§
impl<T> Allocation for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more