This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
combine PERLDB_LINE and PERLDB_SAVESRC flag tests
authorDaniel Dragan <bulk88@hotmail.com>
Thu, 16 Jul 2015 01:59:58 +0000 (21:59 -0400)
committerTony Cook <tony@develop-help.com>
Wed, 22 Jul 2015 01:02:31 +0000 (11:02 +1000)
On VC2003 32b -O1, the .text section of miniperl.exe decreased from
0xAEFCD bytes of machine code to 0xAEF9D after this patch.

see also
http://www.nntp.perl.org/group/perl.perl5.porters/2015/07/msg229308.html

gv.c
perl.h
pp_ctl.c
toke.c

diff --git a/gv.c b/gv.c
index 242ea87..5d642af 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -129,7 +129,7 @@ Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
        sv_setpvn(GvSV(gv), name, namelen);
 #endif
     }
-    if ((PERLDB_LINE || PERLDB_SAVESRC) && !GvAV(gv))
+    if (PERLDB_LINE_OR_SAVESRC && !GvAV(gv))
            hv_magic(GvHVn(gv), GvAVn(gv), PERL_MAGIC_dbfile);
     if (tmpbuf != smallbuf)
        Safefree(tmpbuf);
diff --git a/perl.h b/perl.h
index bcfeee9..9d57450 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -5767,6 +5767,8 @@ typedef struct am_table_short AMTS;
 #define PERLDB_SAVESRC_NOSUBS  (PL_perldb & PERLDBf_SAVESRC_NOSUBS)
 #define PERLDB_SAVESRC_INVALID (PL_perldb & PERLDBf_SAVESRC_INVALID)
 
+#define PERLDB_LINE_OR_SAVESRC (PL_perldb & (PERLDBf_LINE | PERLDBf_SAVESRC))
+
 #ifdef USE_LOCALE
 /* These locale things are all subject to change */
 /* Returns TRUE if the plain locale pragma without a parameter is in effect
index e6fdcf4..ad6efc1 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -4181,7 +4181,7 @@ PP(pp_entereval)
 
     /* prepare to compile string */
 
-    if ((PERLDB_LINE || PERLDB_SAVESRC) && PL_curstash != PL_debstash)
+    if (PERLDB_LINE_OR_SAVESRC && PL_curstash != PL_debstash)
        save_lines(CopFILEAV(&PL_compiling), PL_parser->linestr);
     else {
        /* XXX For C<eval "...">s within BEGIN {} blocks, this ends up
@@ -4198,7 +4198,7 @@ PP(pp_entereval)
 
     if (doeval(gimme, runcv, seq, saved_hh)) {
        if (was != PL_breakable_sub_gen /* Some subs defined here. */
-           ? (PERLDB_LINE || PERLDB_SAVESRC)
+           ?  PERLDB_LINE_OR_SAVESRC
            :  PERLDB_SAVESRC_NOSUBS) {
            /* Retain the filegv we created.  */
        } else if (!saved_delete) {
@@ -4210,7 +4210,7 @@ PP(pp_entereval)
        /* We have already left the scope set up earlier thanks to the LEAVE
           in doeval().  */
        if (was != PL_breakable_sub_gen /* Some subs defined here. */
-           ? (PERLDB_LINE || PERLDB_SAVESRC)
+           ?  PERLDB_LINE_OR_SAVESRC
            :  PERLDB_SAVESRC_INVALID) {
            /* Retain the filegv we created.  */
        } else if (!saved_delete) {
diff --git a/toke.c b/toke.c
index 9a94f91..db82129 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -1338,7 +1338,7 @@ Perl_lex_next_chunk(pTHX_ U32 flags)
        CopLINE_set(PL_curcop, PL_parser->preambling + 1);
        PL_parser->preambling = NOLINE;
     }
-    if (got_some_for_debugger && (PERLDB_LINE || PERLDB_SAVESRC) &&
+    if (got_some_for_debugger && PERLDB_LINE_OR_SAVESRC &&
            PL_curstash != PL_debstash) {
        /* debugger active and we're not compiling the debugger code,
         * so store the line into the debugger's array of lines
@@ -4735,7 +4735,7 @@ Perl_yylex(pTHX)
            PL_oldoldbufptr = PL_oldbufptr = s = PL_linestart = SvPVX(PL_linestr);
            PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
            PL_last_lop = PL_last_uni = NULL;
-           if ((PERLDB_LINE || PERLDB_SAVESRC) && PL_curstash != PL_debstash)
+           if (PERLDB_LINE_OR_SAVESRC && PL_curstash != PL_debstash)
                update_debugger_info(PL_linestr, NULL, 0);
            goto retry;
        }
@@ -4969,7 +4969,7 @@ Perl_yylex(pTHX)
                            } while (argc && argv[0][0] == '-' && argv[0][1]);
                            init_argv_symbols(argc,argv);
                        }
-                       if (((PERLDB_LINE || PERLDB_SAVESRC) && !oldpdb) ||
+                       if ((PERLDB_LINE_OR_SAVESRC && !oldpdb) ||
                            ((PL_minus_n || PL_minus_p) && !(oldn || oldp)))
                              /* if we have already added "LINE: while (<>) {",
                                 we must not do it again */
@@ -4979,7 +4979,7 @@ Perl_yylex(pTHX)
                            PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
                            PL_last_lop = PL_last_uni = NULL;
                            PL_preambled = FALSE;
-                           if (PERLDB_LINE || PERLDB_SAVESRC)
+                           if (PERLDB_LINE_OR_SAVESRC)
                                (void)gv_fetchfile(PL_origfilename);
                            goto retry;
                        }