pub trait Tracer {
Show 16 methods
// Required methods
fn trace_instruction(&mut self, ip: u16, instr: &Instruction<'_>);
fn trace_nav(&mut self, nav: Nav, node: Node<'_>);
fn trace_nav_failure(&mut self, nav: Nav);
fn trace_match_success(&mut self, node: Node<'_>);
fn trace_match_failure(&mut self, node: Node<'_>);
fn trace_field_success(&mut self, field_id: NonZero<u16>);
fn trace_field_failure(&mut self, node: Node<'_>);
fn trace_effect(&mut self, effect: &RuntimeEffect<'_>);
fn trace_effect_suppressed(&mut self, opcode: EffectOpcode, payload: usize);
fn trace_suppress_control(&mut self, opcode: EffectOpcode, suppressed: bool);
fn trace_call(&mut self, target_ip: u16);
fn trace_return(&mut self);
fn trace_checkpoint_created(&mut self, ip: u16);
fn trace_backtrack(&mut self);
fn trace_enter_entrypoint(&mut self, target_ip: u16);
fn trace_enter_preamble(&mut self);
}Expand description
Tracer trait for VM execution instrumentation.
All methods receive raw data (IDs, nodes) that the VM already has. Formatting and name resolution happen in the tracer implementation.
Each method is called at a specific point during execution:
trace_instruction- before executing an instructiontrace_nav- after navigation succeedstrace_match_success/failure- after type checktrace_field_success/failure- after field checktrace_effect- after emitting an effecttrace_call- when entering a definitiontrace_return- when returning from a definitiontrace_checkpoint_created- when a checkpoint is pushedtrace_backtrack- when restoring a checkpointtrace_enter_entrypoint- when entering an entrypoint (for labels)
Required Methods§
Sourcefn trace_instruction(&mut self, ip: u16, instr: &Instruction<'_>)
fn trace_instruction(&mut self, ip: u16, instr: &Instruction<'_>)
Called before executing an instruction.
Called after navigation succeeds.
Called when navigation fails (no child/sibling exists).
Sourcefn trace_match_success(&mut self, node: Node<'_>)
fn trace_match_success(&mut self, node: Node<'_>)
Called after type check succeeds.
Sourcefn trace_match_failure(&mut self, node: Node<'_>)
fn trace_match_failure(&mut self, node: Node<'_>)
Called after type check fails.
Sourcefn trace_field_success(&mut self, field_id: NonZero<u16>)
fn trace_field_success(&mut self, field_id: NonZero<u16>)
Called after field check succeeds.
Sourcefn trace_field_failure(&mut self, node: Node<'_>)
fn trace_field_failure(&mut self, node: Node<'_>)
Called after field check fails.
Sourcefn trace_effect(&mut self, effect: &RuntimeEffect<'_>)
fn trace_effect(&mut self, effect: &RuntimeEffect<'_>)
Called after emitting an effect.
Sourcefn trace_effect_suppressed(&mut self, opcode: EffectOpcode, payload: usize)
fn trace_effect_suppressed(&mut self, opcode: EffectOpcode, payload: usize)
Called when an effect is suppressed (inside @_ capture).
Sourcefn trace_suppress_control(&mut self, opcode: EffectOpcode, suppressed: bool)
fn trace_suppress_control(&mut self, opcode: EffectOpcode, suppressed: bool)
Called for SuppressBegin/SuppressEnd control effects.
suppressed is true if already inside another suppress scope.
Sourcefn trace_call(&mut self, target_ip: u16)
fn trace_call(&mut self, target_ip: u16)
Called when entering a definition via Call.
Sourcefn trace_return(&mut self)
fn trace_return(&mut self)
Called when returning from a definition.
Sourcefn trace_checkpoint_created(&mut self, ip: u16)
fn trace_checkpoint_created(&mut self, ip: u16)
Called when a checkpoint is created.
Sourcefn trace_backtrack(&mut self)
fn trace_backtrack(&mut self)
Called when backtracking occurs.
Sourcefn trace_enter_entrypoint(&mut self, target_ip: u16)
fn trace_enter_entrypoint(&mut self, target_ip: u16)
Called when entering an entrypoint (for section labels).
Sourcefn trace_enter_preamble(&mut self)
fn trace_enter_preamble(&mut self)
Called when entering the preamble (bootstrap wrapper).