This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regcomp.c: Add shortcuts to some inversion list ops
authorKarl Williamson <khw@cpan.org>
Thu, 3 Mar 2016 21:24:39 +0000 (14:24 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 26 May 2016 04:20:36 +0000 (22:20 -0600)
commitc29dfc6a6c45f86648c51f961304254cc3c449b9
tree561853357f69e81b512235b09ec277c8d93be88a
parente67bc19562c85b51b0d54a3997beeb3ceee2447a
regcomp.c: Add shortcuts to some inversion list ops

When taking the union or intersection of two inversion lists, not
infrequently the result is the same as one of the inputs.  An example is
the union of a set that contains all code points with any other set.
The result is the set that contains all code points.  Also, not
infrequently, the result is to overwrite one of the inputs.  If the
other input contributed nothing to the result, the whole operation is
effectively a no-op, as the result has the same contents as the input it
overwrites.

It turns out that it is cheap to keep track of if just one input
contributes to the result.  This commit does that, and short-circuits
the rest of the code if it is going to turn out to be a no-op.
regcomp.c