This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
remove cargo culted redundant PL_perldb test
authorDaniel Dragan <bulk88@hotmail.com>
Fri, 7 Nov 2014 06:30:14 +0000 (01:30 -0500)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 7 Nov 2014 16:12:06 +0000 (08:12 -0800)
Inseperable changes commit 8490252049 and specifically ML post
"Perldb rehaul" by Ilya Zakharevich added a completely redundant
"if(PL_perldb)" test. This was probably cargo culted from the code prior
to that patch where PL_perldb was a (I think) a bool. Neither GCC 4.6.3
nor VC 2003  optimized away the test. Before this patch, .text section in
perl521.dll compiled with VC 2003 was 0xc62d3 bytes of machine code long,
after 0xc6203.

perl.h

diff --git a/perl.h b/perl.h
index da1f94f..b31dcb3 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -5680,19 +5680,19 @@ typedef struct am_table_short AMTS;
 #define PERLDBf_SAVESRC_NOSUBS 0x800   /* Including evals that generate no subroutines */
 #define PERLDBf_SAVESRC_INVALID        0x1000  /* Save source that did not compile */
 
-#define PERLDB_SUB     (PL_perldb && (PL_perldb & PERLDBf_SUB))
-#define PERLDB_LINE    (PL_perldb && (PL_perldb & PERLDBf_LINE))
-#define PERLDB_NOOPT   (PL_perldb && (PL_perldb & PERLDBf_NOOPT))
-#define PERLDB_INTER   (PL_perldb && (PL_perldb & PERLDBf_INTER))
-#define PERLDB_SUBLINE (PL_perldb && (PL_perldb & PERLDBf_SUBLINE))
-#define PERLDB_SINGLE  (PL_perldb && (PL_perldb & PERLDBf_SINGLE))
-#define PERLDB_SUB_NN  (PL_perldb && (PL_perldb & (PERLDBf_NONAME)))
-#define PERLDB_GOTO    (PL_perldb && (PL_perldb & PERLDBf_GOTO))
-#define PERLDB_NAMEEVAL        (PL_perldb && (PL_perldb & PERLDBf_NAMEEVAL))
-#define PERLDB_NAMEANON        (PL_perldb && (PL_perldb & PERLDBf_NAMEANON))
-#define PERLDB_SAVESRC         (PL_perldb && (PL_perldb & PERLDBf_SAVESRC))
-#define PERLDB_SAVESRC_NOSUBS  (PL_perldb && (PL_perldb & PERLDBf_SAVESRC_NOSUBS))
-#define PERLDB_SAVESRC_INVALID (PL_perldb && (PL_perldb & PERLDBf_SAVESRC_INVALID))
+#define PERLDB_SUB             (PL_perldb & PERLDBf_SUB)
+#define PERLDB_LINE            (PL_perldb & PERLDBf_LINE)
+#define PERLDB_NOOPT           (PL_perldb & PERLDBf_NOOPT)
+#define PERLDB_INTER           (PL_perldb & PERLDBf_INTER)
+#define PERLDB_SUBLINE         (PL_perldb & PERLDBf_SUBLINE)
+#define PERLDB_SINGLE          (PL_perldb & PERLDBf_SINGLE)
+#define PERLDB_SUB_NN          (PL_perldb & PERLDBf_NONAME)
+#define PERLDB_GOTO            (PL_perldb & PERLDBf_GOTO)
+#define PERLDB_NAMEEVAL        (PL_perldb & PERLDBf_NAMEEVAL)
+#define PERLDB_NAMEANON        (PL_perldb & PERLDBf_NAMEANON)
+#define PERLDB_SAVESRC         (PL_perldb & PERLDBf_SAVESRC)
+#define PERLDB_SAVESRC_NOSUBS  (PL_perldb & PERLDBf_SAVESRC_NOSUBS)
+#define PERLDB_SAVESRC_INVALID (PL_perldb & PERLDBf_SAVESRC_INVALID)
 
 #ifdef USE_LOCALE
 /* These locale things are all subject to change */