Tracer

Trait Tracer 

Source
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: NonZeroU16); 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 instruction
  • trace_nav - after navigation succeeds
  • trace_match_success/failure - after type check
  • trace_field_success/failure - after field check
  • trace_effect - after emitting an effect
  • trace_call - when entering a definition
  • trace_return - when returning from a definition
  • trace_checkpoint_created - when a checkpoint is pushed
  • trace_backtrack - when restoring a checkpoint
  • trace_enter_entrypoint - when entering an entrypoint (for labels)

Required Methods§

Source

fn trace_instruction(&mut self, ip: u16, instr: &Instruction<'_>)

Called before executing an instruction.

Source

fn trace_nav(&mut self, nav: Nav, node: Node<'_>)

Called after navigation succeeds.

Source

fn trace_nav_failure(&mut self, nav: Nav)

Called when navigation fails (no child/sibling exists).

Source

fn trace_match_success(&mut self, node: Node<'_>)

Called after type check succeeds.

Source

fn trace_match_failure(&mut self, node: Node<'_>)

Called after type check fails.

Source

fn trace_field_success(&mut self, field_id: NonZeroU16)

Called after field check succeeds.

Source

fn trace_field_failure(&mut self, node: Node<'_>)

Called after field check fails.

Source

fn trace_effect(&mut self, effect: &RuntimeEffect<'_>)

Called after emitting an effect.

Source

fn trace_effect_suppressed(&mut self, opcode: EffectOpcode, payload: usize)

Called when an effect is suppressed (inside @_ capture).

Source

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.

Source

fn trace_call(&mut self, target_ip: u16)

Called when entering a definition via Call.

Source

fn trace_return(&mut self)

Called when returning from a definition.

Source

fn trace_checkpoint_created(&mut self, ip: u16)

Called when a checkpoint is created.

Source

fn trace_backtrack(&mut self)

Called when backtracking occurs.

Source

fn trace_enter_entrypoint(&mut self, target_ip: u16)

Called when entering an entrypoint (for section labels).

Source

fn trace_enter_preamble(&mut self)

Called when entering the preamble (bootstrap wrapper).

Implementors§