@@ -347,11 +347,22 @@ impl BitMachine {
347347 call_stack. push ( CallStack :: Goto ( left) ) ;
348348 }
349349 node:: Inner :: Case ( ..) | node:: Inner :: AssertL ( ..) | node:: Inner :: AssertR ( ..) => {
350- let choice_bit = self . read [ self . read . len ( ) - 1 ] . peek_bit ( & self . data ) ;
350+ let in_frame = & self . read [ self . read . len ( ) - 1 ] ;
351+ let choice_bit: bool = in_frame. peek_bit ( & self . data ) ;
351352
352353 let ( sum_a_b, _c) = ip. arrow ( ) . source . as_product ( ) . unwrap ( ) ;
353354 let ( a, b) = sum_a_b. as_sum ( ) . unwrap ( ) ;
354355
356+ #[ cfg( feature = "debug" ) ]
357+ if let node:: Inner :: AssertL ( _, cmr) = ip. inner ( ) {
358+ let mut bits = in_frame. as_bit_iter ( & self . data ) ;
359+ bits. nth ( 1 + a. pad_left ( b) )
360+ . expect ( "AssertL: unexpected end of frame" ) ;
361+ let value = Value :: from_padded_bits ( & mut bits, _c)
362+ . expect ( "AssertL: decode `C` value" ) ;
363+ tracker. track_dbg_call ( cmr, value) ;
364+ }
365+
355366 match ( ip. inner ( ) , choice_bit) {
356367 ( node:: Inner :: Case ( _, right) , true )
357368 | ( node:: Inner :: AssertR ( _, right) , true ) => {
@@ -545,6 +556,9 @@ pub trait ExecTracker<J: Jet> {
545556 output_buffer : & [ UWORD ] ,
546557 success : bool ,
547558 ) ;
559+
560+ /// Track the potential execution of a `dbg!` call with the given `cmr` and `value`.
561+ fn track_dbg_call ( & mut self , cmr : & Cmr , value : Value ) ;
548562}
549563
550564/// Tracker of executed left and right branches for each case node.
@@ -580,6 +594,8 @@ impl<J: Jet> ExecTracker<J> for SetTracker {
580594 }
581595
582596 fn track_jet_call ( & mut self , _: & J , _: & [ UWORD ] , _: & [ UWORD ] , _: bool ) { }
597+
598+ fn track_dbg_call ( & mut self , _: & Cmr , _: Value ) { }
583599}
584600
585601impl < J : Jet > ExecTracker < J > for NoTracker {
@@ -588,6 +604,8 @@ impl<J: Jet> ExecTracker<J> for NoTracker {
588604 fn track_right ( & mut self , _: Ihr ) { }
589605
590606 fn track_jet_call ( & mut self , _: & J , _: & [ UWORD ] , _: & [ UWORD ] , _: bool ) { }
607+
608+ fn track_dbg_call ( & mut self , _: & Cmr , _: Value ) { }
591609}
592610
593611/// Errors related to simplicity Execution
0 commit comments