@@ -761,28 +761,32 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
761
761
let entry = TranscriptEntry ::to_field (TranscriptEntry { token , index , length });
762
762
763
763
if token == LITERAL_TOKEN as Field {
764
- let index_as_u32 = index as u32 ;
765
764
index .assert_max_bit_size ::<8 >();
765
+ let index_as_u32 = index as u32 ;
766
+ let first_char = self .json [index_as_u32 ];
767
+ let second_char = self .json [index_as_u32 + 1 ];
768
+ let third_char = self .json [index_as_u32 + 2 ];
769
+ let fourth_char = self .json [index_as_u32 + 3 ];
766
770
if length == 5 {
767
- let is_false = (self .json [index_as_u32 ] == 102 ) // 'f'
768
- & (self .json [index_as_u32 + 1 ] == 97 ) // 'a'
769
- & (self .json [index_as_u32 + 2 ] == 108 ) // 'l'
770
- & (self .json [index_as_u32 + 3 ] == 115 ) // 's'
771
- & (self .json [index_as_u32 + 4 ] == 101 ); // 'e'
771
+ let fifth_char = self .json [index_as_u32 + 4 ];
772
+ let is_false = (first_char == 102 ) // 'f'
773
+ & (second_char == 97 ) // 'a'
774
+ & (third_char == 108 ) // 'l'
775
+ & (fourth_char == 115 ) // 's'
776
+ & (fifth_char == 101 ); // 'e'
772
777
assert (is_false , "invalid literal" );
773
- } else if length == 4 {
774
- let is_true = (self .json [index_as_u32 ] == 116 ) // 't'
775
- & (self .json [index_as_u32 + 1 ] == 114 ) // 'r'
776
- & (self .json [index_as_u32 + 2 ] == 117 ) // 'u'
777
- & (self .json [index_as_u32 + 3 ] == 101 ); // 'e'
778
-
779
- let is_null = (self .json [index_as_u32 ] == 110 ) // 'n'
780
- & (self .json [index_as_u32 + 1 ] == 117 ) // 'u'
781
- & (self .json [index_as_u32 + 2 ] == 108 ) // 'l'
782
- & (self .json [index_as_u32 + 3 ] == 108 ); // 'l'
783
- assert (is_null | is_true , "invalid literal" );
784
778
} else {
785
- assert (false , "invalid literal" );
779
+ assert_eq (length , 4 , "invalid literal" );
780
+ let is_true = (first_char == 116 ) // 't'
781
+ & (second_char == 114 ) // 'r'
782
+ & (third_char == 117 ) // 'u'
783
+ & (fourth_char == 101 ); // 'e'
784
+
785
+ let is_null = (first_char == 110 ) // 'n'
786
+ & (second_char == 117 ) // 'u'
787
+ & (third_char == 108 ) // 'l'
788
+ & (fourth_char == 108 ); // 'l'
789
+ assert (is_null | is_true , "invalid literal" );
786
790
}
787
791
}
788
792
// 2 gates
0 commit comments