#[repr(C)]pub struct DeoptInfo {
pub resume_ip: usize,
pub frame_count: usize,
pub stack_count: usize,
pub frames: [DeoptFrame; 4],
pub stack_buf: [i64; 32],
pub stack_kinds: [u8; 32],
}Expand description
Out-parameter the trace fn writes on every invocation.
resume_ip is set by the trace on every exit (normal loop fallthrough
OR side-exit). frame_count is 0 for caller-frame side-exits (no
materialization needed) and 1..=MAX_DEOPT_FRAMES for callee-frame
side-exits. stack_count is the number of abstract-stack values the
trace had built up at the side-exit; the VM pushes them onto
vm.stack after the trace returns, materializing each entry as
Value::Int or Value::Float based on the parallel stack_kinds
tag (Float values are bit-cast through f64::from_bits).
Fields§
§resume_ip: usizeBytecode IP the interpreter should resume at (set on every trace exit — normal fallthrough and side-exit alike).
frame_count: usizeNumber of materialised callee frames in frames (0 for
caller-frame side-exits, 1..=MAX_DEOPT_FRAMES for callee).
stack_count: usizeNumber of abstract-stack entries in stack_buf to push onto
vm.stack after the trace returns.
frames: [DeoptFrame; 4]Callee frame snapshots (slot vectors + return IPs) for the
VM to restore. Slots 0..frame_count are valid.
stack_buf: [i64; 32]Raw bit pattern for each abstract-stack entry; reinterpret as
i64 or f64 based on stack_kinds[i].
stack_kinds: [u8; 32]Per-entry tag for stack_buf: STACK_KIND_INT or
STACK_KIND_FLOAT.