File tree Expand file tree Collapse file tree 2 files changed +29
-17
lines changed Expand file tree Collapse file tree 2 files changed +29
-17
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ swc_core : patch
3
+ swc_common : patch
4
+ ---
5
+
6
+ perf(swc/common): rm char_indices
Original file line number Diff line number Diff line change @@ -155,16 +155,19 @@ impl<'a> Input<'a> for StringInput<'a> {
155
155
where
156
156
F : FnMut ( char ) -> bool ,
157
157
{
158
- let s = self . iter . as_str ( ) ;
159
- let mut last = 0 ;
160
-
161
- for ( i , c ) in s . char_indices ( ) {
162
- if pred ( c ) {
163
- last = i + c . len_utf8 ( ) ;
164
- } else {
165
- break ;
158
+ let last = {
159
+ let mut last = 0 ;
160
+ for c in self . iter . clone ( ) {
161
+ if pred ( c ) {
162
+ last += c . len_utf8 ( ) ;
163
+ } else {
164
+ break ;
165
+ }
166
166
}
167
- }
167
+ last
168
+ } ;
169
+
170
+ let s = self . iter . as_str ( ) ;
168
171
debug_assert ! ( last <= s. len( ) ) ;
169
172
let ret = unsafe { s. get_unchecked ( ..last) } ;
170
173
@@ -178,19 +181,22 @@ impl<'a> Input<'a> for StringInput<'a> {
178
181
where
179
182
F : FnMut ( char ) -> bool ,
180
183
{
181
- let s = self . iter . as_str ( ) ;
182
- let mut last = 0 ;
183
-
184
- for ( i , c ) in s . char_indices ( ) {
185
- if pred ( c) {
186
- last = i + c . len_utf8 ( ) ;
187
- break ;
184
+ let last = {
185
+ let mut last = 0 ;
186
+ for c in self . iter . clone ( ) {
187
+ last += c . len_utf8 ( ) ;
188
+ if pred ( c) {
189
+ break ;
190
+ }
188
191
}
189
- }
192
+ last
193
+ } ;
194
+
190
195
if last == 0 {
191
196
return None ;
192
197
}
193
198
199
+ let s = self . iter . as_str ( ) ;
194
200
debug_assert ! ( last <= s. len( ) ) ;
195
201
196
202
self . last_pos = self . last_pos + BytePos ( last as _ ) ;
You can’t perform that action at this time.
0 commit comments