@@ -308,23 +308,30 @@ def peep(len)
308
308
peek len
309
309
end
310
310
311
- def scan_check_args ( pattern , headonly )
311
+ private def scan_check_args ( pattern , headonly )
312
312
unless pattern . kind_of? Regexp
313
313
raise TypeError , "bad pattern argument: #{ pattern . inspect } "
314
314
end
315
315
raise ArgumentError , 'uninitialized StringScanner object' unless @string
316
316
end
317
317
318
- def scan_internal ( pattern , advance_pos , getstr , headonly )
318
+ # This method is kept very small so that it should fit within 100
319
+ # AST nodes and can be split. This is done to avoid indirect calls
320
+ # to TRegex.
321
+ private def scan_internal ( pattern , advance_pos , getstr , headonly )
319
322
scan_check_args ( pattern , headonly )
320
323
321
324
md = Truffle ::RegexpOperations . match_in_region pattern , @string , pos , @string . bytesize , headonly , pos
322
- Primitive . matchdata_fixup_positions ( md , pos ) if md
323
- @match = md
324
- scan_internal2 ( advance_pos , getstr )
325
+ if md
326
+ Primitive . matchdata_fixup_positions ( md , pos )
327
+ @match = md
328
+ scan_internal_set_pos_and_str ( advance_pos , getstr )
329
+ else
330
+ @match = nil
331
+ end
325
332
end
326
333
327
- def scan_internal2 ( advance_pos , getstr )
334
+ private def scan_internal_set_pos_and_str ( advance_pos , getstr )
328
335
return nil unless @match
329
336
330
337
fin = Primitive . match_data_byte_end ( @match , 0 )
@@ -337,6 +344,5 @@ def scan_internal2(advance_pos, getstr)
337
344
338
345
@string . byteslice ( @prev_pos , width )
339
346
end
340
- private :scan_internal , :scan_internal2 , :scan_check_args
341
347
342
348
end
0 commit comments