If you watch an execution trace of regexec /i, often you will see it
folding the same thing over and over, as it backtracks or searches
ahead. regcomp.c has now been changed to always fold UTF-8 encoded
EXACTF and EXCACTFU nodes. This allows these to not be re-folded each
time.
This commit does it just for find_by_class(). Other commits will expand
this technique for other cases.
case EXACTF:
if (UTF_PATTERN || utf8_target) {
- utf8_fold_flags = 0;
+
+ /* regcomp.c already folded this if pattern is in UTF-8 */
+ utf8_fold_flags = (UTF_PATTERN) ? FOLDEQ_S2_ALREADY_FOLDED : 0;
goto do_exactf_utf8;
}
fold_array = PL_fold;
case EXACTFU:
if (UTF_PATTERN || utf8_target) {
- utf8_fold_flags = 0;
+ utf8_fold_flags = (UTF_PATTERN) ? FOLDEQ_S2_ALREADY_FOLDED : 0;
goto do_exactf_utf8;
}