This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regexec.c: Save a conditional per iteration
authorKarl Williamson <khw@cpan.org>
Wed, 27 Dec 2017 00:32:10 +0000 (17:32 -0700)
committerKarl Williamson <khw@cpan.org>
Sat, 30 Dec 2017 05:45:14 +0000 (22:45 -0700)
commit7631e439cf77fc6ad6cefab221afc7cc44b80e59
treef4ed1c4d215f787770ef58c5b44b9cafe28f2516
parente4a1c03b404bbc7ac974607ebb4969bae512b0b2
regexec.c: Save a conditional per iteration

This commit changes two places where to use a mask instead of a
condition in loops implementing things like /a+/, which can potentially
iterate many times.

This arises under /i matching where we accept either an 'A' or an 'a'
for example.  In most cases, the case folds differ in only a single bit,
so we can mask that bit out during comparisons, yielding two possible
characters, precisely the ones we are interested in.  This means we
don't have to test for the character being 'A', then test for it being
'a'.  We can accomplish this in one conditional.
regexec.c