regexec.c: omit goto for the common case
authorKarl Williamson <public@khwilliamson.com>
Sun, 16 Oct 2011 14:30:15 +0000 (08:30 -0600)
committerKarl Williamson <public@khwilliamson.com>
Mon, 17 Oct 2011 23:04:28 +0000 (17:04 -0600)
The structure of this code is that initial setup is done and then gotos
or fall-through used to join for the main logic.  This commit just moves
a block, without logic changes, so that the more common case has a
fall-through instead of a goto.

regexec.c

index d063308..1e4bd62 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -1463,19 +1463,6 @@ S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s,
            folder = foldEQ_latin1;         /* /a, except the sharp s one which */
            goto do_exactf_non_utf8;        /* isn't dealt with by these */
 
-       case EXACTFU:
-           if (UTF_PATTERN || utf8_target) {
-               utf8_fold_flags = 0;
-               goto do_exactf_utf8;
-           }
-
-           /* Any 'ss' in the pattern should have been replaced by regcomp,
-            * so we don't have to worry here about this single special case
-            * in the Latin1 range */
-           fold_array = PL_fold_latin1;
-           folder = foldEQ_latin1;
-           goto do_exactf_non_utf8;
-
        case EXACTF:
            if (UTF_PATTERN || utf8_target) {
                utf8_fold_flags = 0;
@@ -1492,6 +1479,19 @@ S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s,
            }
            fold_array = PL_fold_locale;
            folder = foldEQ_locale;
+           goto do_exactf_non_utf8;
+
+       case EXACTFU:
+           if (UTF_PATTERN || utf8_target) {
+               utf8_fold_flags = 0;
+               goto do_exactf_utf8;
+           }
+
+           /* Any 'ss' in the pattern should have been replaced by regcomp,
+            * so we don't have to worry here about this single special case
+            * in the Latin1 range */
+           fold_array = PL_fold_latin1;
+           folder = foldEQ_latin1;
 
            /* FALL THROUGH */