Minor optimization in re_intuit_start
authorIlya Zakharevich <ilya@math.berkeley.edu>
Thu, 28 Sep 2000 21:55:31 +0000 (17:55 -0400)
committerJarkko Hietaniemi <jhi@iki.fi>
Mon, 2 Oct 2000 23:48:58 +0000 (23:48 +0000)
Message-ID: <20000928215531.A4315@monk.mps.ohio-state.edu>

p4raw-id: //depot/perl@7115

regexec.c

index ea52383..d3f2065 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -357,17 +357,18 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
                     || ( (prog->reganch & ROPT_ANCH_BOL)
                          && !PL_multiline ) ); /* Check after \n? */
 
-       if ((prog->check_offset_min == prog->check_offset_max) && !ml_anch) {
+       if (!ml_anch) {
+         if ( !(prog->reganch & ROPT_ANCH_GPOS) /* Checked by the caller */
+              /* SvCUR is not set on references: SvRV and SvPVX overlap */
+              && sv && !SvROK(sv)
+              && (strpos + SvCUR(sv) != strend)) {
+             DEBUG_r(PerlIO_printf(Perl_debug_log, "Not at start...\n"));
+             goto fail;
+         }
+         if (prog->check_offset_min == prog->check_offset_max) {
            /* Substring at constant offset from beg-of-str... */
            I32 slen;
 
-           if ( !(prog->reganch & ROPT_ANCH_GPOS) /* Checked by the caller */
-                /* SvCUR is not set on references: SvRV and SvPVX overlap */
-                && sv && !SvROK(sv)
-                && (strpos + SvCUR(sv) != strend)) {
-               DEBUG_r(PerlIO_printf(Perl_debug_log, "Not at start...\n"));
-               goto fail;
-           }
            PL_regeol = strend;                 /* Used in HOP() */
            s = HOPc(strpos, prog->check_offset_min);
            if (SvTAIL(check)) {
@@ -393,6 +394,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos,
                         && memNE(SvPVX(check), s, slen)))
                goto report_neq;
            goto success_at_start;
+         }
        }
        /* Match is anchored, but substr is not anchored wrt beg-of-str. */
        s = strpos;