@@ -148,7 +148,6 @@ fileprivate extension Compiler.ByteCodeGen {
148148
149149 // Fast path for eliding boundary checks for an all ascii quoted literal
150150 if optimizationsEnabled && s. allSatisfy ( \. isASCII) && !s. isEmpty {
151- builder. buildReverseUnicodeScalar ( 1 )
152151 let lastIdx = s. unicodeScalars. indices. first!
153152 for idx in s. unicodeScalars. indices. reversed ( ) {
154153 let boundaryCheck = idx == lastIdx
@@ -162,7 +161,6 @@ fileprivate extension Compiler.ByteCodeGen {
162161 return
163162 }
164163
165- builder. buildReverse ( 1 )
166164 for c in s. reversed ( ) { emitCharacter ( c) }
167165 }
168166
@@ -223,7 +221,6 @@ fileprivate extension Compiler.ByteCodeGen {
223221
224222 mutating func emitReverseMatchScalar( _ s: UnicodeScalar ) {
225223 assert ( options. semanticLevel == . unicodeScalar)
226- builder. buildReverseUnicodeScalar ( 1 )
227224 if options. isCaseInsensitive && s. properties. isCased {
228225 builder. buildReverseMatchScalarCaseInsensitive ( s, boundaryCheck: false )
229226 } else {
@@ -254,7 +251,6 @@ fileprivate extension Compiler.ByteCodeGen {
254251 boundaryCheck: true )
255252 } else {
256253 if reverse {
257- builder. buildReverse ( 1 )
258254 builder. buildReverseMatch ( c, isCaseInsensitive: true )
259255 } else {
260256 builder. buildMatch ( c, isCaseInsensitive: true )
@@ -269,7 +265,6 @@ fileprivate extension Compiler.ByteCodeGen {
269265 let scalar = c. unicodeScalars [ idx]
270266 let boundaryCheck = idx == lastIdx
271267 if reverse {
272- builder. buildReverseUnicodeScalar ( 1 )
273268 builder. buildReverseMatchScalar ( scalar, boundaryCheck: boundaryCheck)
274269 } else {
275270 builder. buildMatchScalar ( scalar, boundaryCheck: boundaryCheck)
@@ -279,7 +274,6 @@ fileprivate extension Compiler.ByteCodeGen {
279274 }
280275
281276 if reverse {
282- builder. buildReverse ( 1 )
283277 builder. buildReverseMatch ( c, isCaseInsensitive: false )
284278 } else {
285279 builder. buildMatch ( c, isCaseInsensitive: false )
@@ -388,6 +382,9 @@ fileprivate extension Compiler.ByteCodeGen {
388382
389383 builder. buildSave ( success)
390384 builder. buildSave ( intercept)
385+ if reverse {
386+ builder. buildReverse ( 1 )
387+ }
391388 try emitNode ( child)
392389 builder. buildClearThrough ( intercept)
393390 builder. buildFail ( preservingCaptures: true ) // Lookahead succeeds here
@@ -417,6 +414,9 @@ fileprivate extension Compiler.ByteCodeGen {
417414
418415 builder. buildSave ( success)
419416 builder. buildSave ( intercept)
417+ if reverse {
418+ builder. buildReverse ( 1 )
419+ }
420420 try emitNode ( child)
421421 builder. buildClearThrough ( intercept)
422422 builder. buildClear ( )
@@ -795,7 +795,6 @@ fileprivate extension Compiler.ByteCodeGen {
795795 return false
796796 }
797797 if reverse {
798- builder. buildReverse ( 1 )
799798 builder. buildReverseQuantify ( bitset: bitset, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
800799 } else {
801800 builder. buildQuantify ( bitset: bitset, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
@@ -809,15 +808,13 @@ fileprivate extension Compiler.ByteCodeGen {
809808 return false
810809 }
811810 if reverse {
812- builder. buildReverse ( 1 )
813811 builder. buildReverseQuantify ( asciiChar: val, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
814812 } else {
815813 builder. buildQuantify ( asciiChar: val, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
816814 }
817815
818816 case . any:
819817 if reverse {
820- builder. buildReverse ( 1 )
821818 builder. buildReverseQuantifyAny (
822819 matchesNewlines: true , kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
823820 } else {
@@ -826,7 +823,6 @@ fileprivate extension Compiler.ByteCodeGen {
826823 }
827824 case . anyNonNewline:
828825 if reverse {
829- builder. buildReverse ( 1 )
830826 builder. buildReverseQuantifyAny (
831827 matchesNewlines: false , kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
832828 } else {
@@ -835,7 +831,6 @@ fileprivate extension Compiler.ByteCodeGen {
835831 }
836832 case . dot:
837833 if reverse {
838- builder. buildReverse ( 1 )
839834 builder. buildReverseQuantifyAny (
840835 matchesNewlines: options. dotMatchesNewline, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
841836 } else {
@@ -847,7 +842,6 @@ fileprivate extension Compiler.ByteCodeGen {
847842 // Custom character class that consumes a single grapheme
848843 let model = cc. asRuntimeModel ( options)
849844 if reverse {
850- builder. buildReverse ( 1 )
851845 builder. buildReverseQuantify (
852846 model: model,
853847 kind,
@@ -914,7 +908,6 @@ fileprivate extension Compiler.ByteCodeGen {
914908 guard let bitset = ccc. asAsciiBitset ( options) else {
915909 return false
916910 }
917- builder. buildReverse ( 1 )
918911 builder. buildReverseQuantify ( bitset: bitset, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
919912
920913 case . atom( let atom) :
@@ -924,26 +917,21 @@ fileprivate extension Compiler.ByteCodeGen {
924917 guard let val = c. _singleScalarAsciiValue else {
925918 return false
926919 }
927- builder. buildReverse ( 1 )
928920 builder. buildReverseQuantify ( asciiChar: val, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
929921
930922 case . any:
931- builder. buildReverse ( 1 )
932923 builder. buildReverseQuantifyAny (
933924 matchesNewlines: true , kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
934925 case . anyNonNewline:
935- builder. buildReverse ( 1 )
936926 builder. buildReverseQuantifyAny (
937927 matchesNewlines: false , kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
938928 case . dot:
939- builder. buildReverse ( 1 )
940929 builder. buildReverseQuantifyAny (
941930 matchesNewlines: options. dotMatchesNewline, kind, minTrips, maxExtraTrips, isScalarSemantics: isScalarSemantics)
942931
943932 case . characterClass( let cc) :
944933 // Custom character class that consumes a single grapheme
945934 let model = cc. asRuntimeModel ( options)
946- builder. buildReverse ( 1 )
947935 builder. buildReverseQuantify (
948936 model: model,
949937 kind,
0 commit comments