regexec.c: Use ANYOF bitmap lookup in more cases
authorKarl Williamson <khw@cpan.org>
Sun, 18 Nov 2018 22:46:07 +0000 (15:46 -0700)
committerKarl Williamson <khw@cpan.org>
Tue, 27 Nov 2018 05:24:33 +0000 (22:24 -0700)
commitdaced5aea4695da4ec9e629bb3153a865d480075
treec3633bb76fcdbbfa56a9feae21317944481bb5aa
parent5b864157a512a368408bbffe50b594a639cba56a
regexec.c: Use ANYOF bitmap lookup in more cases

ANYOFish nodes have a bitmap.  If we know the value is in the bitmap
range, then flags that apply to out-of-range values are irrelevant.
Other flags being set indicate that the desired answer is more
complicated than just using a bitmap lookup.  But exclude this
irrelevant flag from that calculation when we know the value is in the
bitmap.

There are other flags that it is possible to exclude, but not without
further conditionals, or unsharing code, and are either rarely set or
are for node types that we don't worry so much about optimal
performance, like /l and /d.  The changes introduced by this commit
are determined at .c compile time except for a runtime mask, and hence
don't introduce new branches that may destroy the instruction cache
pipeline.
regexec.c