@@ -347,11 +347,23 @@ impl BitMachine {
347
347
call_stack. push ( CallStack :: Goto ( left) ) ;
348
348
}
349
349
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 ) ;
351
352
352
353
let ( sum_a_b, _c) = ip. arrow ( ) . source . as_product ( ) . unwrap ( ) ;
353
354
let ( a, b) = sum_a_b. as_sum ( ) . unwrap ( ) ;
354
355
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
+ // Skips 1 + max(a.bit_width, b.bit_width) - a.bit_width
360
+ bits. nth ( a. pad_left ( b) )
361
+ . expect ( "AssertL: unexpected end of frame" ) ;
362
+ let value = Value :: from_padded_bits ( & mut bits, _c)
363
+ . expect ( "AssertL: decode `C` value" ) ;
364
+ tracker. track_dbg_call ( cmr, value) ;
365
+ }
366
+
355
367
match ( ip. inner ( ) , choice_bit) {
356
368
( node:: Inner :: Case ( _, right) , true )
357
369
| ( node:: Inner :: AssertR ( _, right) , true ) => {
@@ -545,6 +557,9 @@ pub trait ExecTracker<J: Jet> {
545
557
output_buffer : & [ UWORD ] ,
546
558
success : bool ,
547
559
) ;
560
+
561
+ /// Track the potential execution of a `dbg!` call with the given `cmr` and `value`.
562
+ fn track_dbg_call ( & mut self , cmr : & Cmr , value : Value ) ;
548
563
}
549
564
550
565
/// Tracker of executed left and right branches for each case node.
@@ -580,6 +595,8 @@ impl<J: Jet> ExecTracker<J> for SetTracker {
580
595
}
581
596
582
597
fn track_jet_call ( & mut self , _: & J , _: & [ UWORD ] , _: & [ UWORD ] , _: bool ) { }
598
+
599
+ fn track_dbg_call ( & mut self , _: & Cmr , _: Value ) { }
583
600
}
584
601
585
602
impl < J : Jet > ExecTracker < J > for NoTracker {
@@ -588,6 +605,8 @@ impl<J: Jet> ExecTracker<J> for NoTracker {
588
605
fn track_right ( & mut self , _: Ihr ) { }
589
606
590
607
fn track_jet_call ( & mut self , _: & J , _: & [ UWORD ] , _: & [ UWORD ] , _: bool ) { }
608
+
609
+ fn track_dbg_call ( & mut self , _: & Cmr , _: Value ) { }
591
610
}
592
611
593
612
/// Errors related to simplicity Execution
0 commit comments