@@ -420,27 +420,28 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
420
420
let mut transcript_ptr : u32 = 0 ;
421
421
let mut scan_mode = GRAMMAR_CAPTURE ;
422
422
let mut length : Field = 0 ;
423
- let mut previous_was_potential_escape_sequence = 0 ;
423
+ let mut previous_was_potential_escape_sequence : bool = false ;
424
424
for i in 0 ..NumBytes {
425
425
// while this assert is in an unconstrained function, the out of bounds accesss `raw_transcript[transcript_ptr]` in build_transcript also generates failing constraints
426
426
assert (transcript_ptr < MaxNumTokens , "build_transcript: MaxNumTokens limit exceeded!" );
427
427
let ascii = self .json [i ];
428
428
429
- let encoded_ascii =
430
- previous_was_potential_escape_sequence * 1024 + scan_mode * 256 + ascii as Field ;
429
+ let encoded_ascii = previous_was_potential_escape_sequence as Field * 1024
430
+ + scan_mode * 256
431
+ + ascii as Field ;
431
432
let ScanData { scan_token , push_transcript , increase_length , is_potential_escape_sequence } =
432
433
ScanData ::from_field (JSON_CAPTURE_TABLE [cast_num_to_u32 (encoded_ascii )]);
433
434
434
- if push_transcript == 1 {
435
+ if push_transcript {
435
436
let new_entry = RawTranscriptEntry ::to_field (
436
437
RawTranscriptEntry { encoded_ascii , index : i as Field - length , length },
437
438
);
438
439
439
440
raw_transcript [transcript_ptr ] = new_entry ;
440
441
transcript_ptr += 1 ;
441
- length = increase_length ;
442
+ length = increase_length as Field ;
442
443
} else {
443
- length += increase_length ;
444
+ length += increase_length as Field ;
444
445
}
445
446
446
447
previous_was_potential_escape_sequence = is_potential_escape_sequence ;
@@ -493,13 +494,14 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
493
494
let raw_transcript = unsafe { self .__build_transcript () };
494
495
495
496
// 14 gates per iteration, plus fixed cost for initing 2,048 size lookup table (4,096 gates)
496
- let mut previous_was_potential_escape_sequence = 0 ;
497
+ let mut previous_was_potential_escape_sequence : bool = false ;
497
498
for i in 0 ..NumBytes {
498
499
let ascii = self .json [i ];
499
500
500
501
// 1 gate
501
- let encoded_ascii =
502
- previous_was_potential_escape_sequence * 1024 + scan_mode * 256 + ascii as Field ;
502
+ let encoded_ascii = previous_was_potential_escape_sequence as Field * 1024
503
+ + scan_mode * 256
504
+ + ascii as Field ;
503
505
std:: as_witness (encoded_ascii );
504
506
505
507
// 2 gates
@@ -519,14 +521,14 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
519
521
std:: as_witness (diff );
520
522
521
523
// 1 gate
522
- assert (diff * push_transcript == 0 );
524
+ assert (diff * push_transcript as Field == 0 );
523
525
524
526
// 1 gate
525
- length = length * (1 - push_transcript ) + increase_length ;
527
+ length = length * (1 - push_transcript as Field ) + increase_length as Field ;
526
528
std:: as_witness (length );
527
529
528
530
// 1 gate
529
- transcript_ptr += push_transcript ;
531
+ transcript_ptr += push_transcript as Field ;
530
532
531
533
previous_was_potential_escape_sequence = is_potential_escape_sequence ;
532
534
scan_mode = scan_token ;
0 commit comments