@@ -347,11 +347,22 @@ 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
+ 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
+
355
366
match ( ip. inner ( ) , choice_bit) {
356
367
( node:: Inner :: Case ( _, right) , true )
357
368
| ( node:: Inner :: AssertR ( _, right) , true ) => {
@@ -545,6 +556,9 @@ pub trait ExecTracker<J: Jet> {
545
556
output_buffer : & [ UWORD ] ,
546
557
success : bool ,
547
558
) ;
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 ) ;
548
562
}
549
563
550
564
/// Tracker of executed left and right branches for each case node.
@@ -580,6 +594,8 @@ impl<J: Jet> ExecTracker<J> for SetTracker {
580
594
}
581
595
582
596
fn track_jet_call ( & mut self , _: & J , _: & [ UWORD ] , _: & [ UWORD ] , _: bool ) { }
597
+
598
+ fn track_dbg_call ( & mut self , _: & Cmr , _: Value ) { }
583
599
}
584
600
585
601
impl < J : Jet > ExecTracker < J > for NoTracker {
@@ -588,6 +604,8 @@ impl<J: Jet> ExecTracker<J> for NoTracker {
588
604
fn track_right ( & mut self , _: Ihr ) { }
589
605
590
606
fn track_jet_call ( & mut self , _: & J , _: & [ UWORD ] , _: & [ UWORD ] , _: bool ) { }
607
+
608
+ fn track_dbg_call ( & mut self , _: & Cmr , _: Value ) { }
591
609
}
592
610
593
611
/// Errors related to simplicity Execution
0 commit comments