Find optimizations for /[[:posix:]]/a
authorKarl Williamson <khw@cpan.org>
Thu, 1 Nov 2018 07:43:39 +0000 (01:43 -0600)
committerKarl Williamson <khw@cpan.org>
Fri, 16 Nov 2018 17:48:18 +0000 (10:48 -0700)
commita3049f27dc6cc3bb1606fb16c1858a7cc4ac9de6
tree68ec8e1c1c9830acbe2d92abff06e1a553f8d256
parent3c92e13394fced16c55aca22b7557b6baea486e4
Find optimizations for /[[:posix:]]/a

Various optimizations are done when the regular expression compiler sees
a bracketed character class.  For example, /[a]/ is optimized into /a/.
This wasn't done for the various POSIX classes under /a, as the speed of
the operations of using a regular bracketed class (which uses a bitmap)
and of an optimized version (which uses a specialized opcode for the
POSIX class) is similar.  The only advantage would have been that the
specialized opcode is 1/10 the size of the bitmap.  But the optimization
in general couldn't come until the second pass, after the size had
already been calculated and space allocated.  So there was no savings.

But now that there is no separate sizing pass, doing the optimization
actually will save space.
regcomp.c
t/re/anyof.t