develooper Front page | perl.perl5.porters | Postings from January 2003

Re: [PATCH] Re: change #9754: 5 x slowdown for perl -d

From:
Dave Mitchell
Date:
January 26, 2003 09:46
Subject:
Re: [PATCH] Re: change #9754: 5 x slowdown for perl -d
Message ID:
20030126174242.H16182@fdgroup.com
On Sun, Jan 26, 2003 at 03:37:00PM +0100, Rafael Garcia-Suarez wrote:
> or e) use a version of PUSHSUB that doesn't look for flags in
> PL_op->op_private in pp_dbstate.

How about the following?

-- 
The optimist believes that he lives in the best of all possible worlds.
As does the pessimist.


--- cop.h-	Sun Jan 26 16:42:03 2003
+++ cop.h	Sun Jan 26 16:53:09 2003
@@ -120,13 +120,23 @@
     PAD		*oldcomppad;
 };
 
-#define PUSHSUB(cx)							\
+/* base for the next two macros. Don't use directly */
+#define PUSHSUB_BASE(cx)						\
 	cx->blk_sub.cv = cv;						\
 	cx->blk_sub.olddepth = CvDEPTH(cv);				\
-	cx->blk_sub.hasargs = hasargs;					\
+	cx->blk_sub.hasargs = hasargs;
+
+#define PUSHSUB(cx)							\
+	PUSHSUB_BASE(cx)						\
 	cx->blk_sub.lval = PL_op->op_private &                          \
 	                      (OPpLVAL_INTRO|OPpENTERSUB_INARGS);
 
+/* variant for use by OP_DBSTATE, where op_private holds hint bits */
+#define PUSHSUB_DB(cx)							\
+	PUSHSUB_BASE(cx)						\
+	cx->blk_sub.lval = 0;
+
+
 #define PUSHFORMAT(cx)							\
 	cx->blk_sub.cv = cv;						\
 	cx->blk_sub.gv = gv;						\
--- pp_ctl.c-	Sun Jan 26 16:47:59 2003
+++ pp_ctl.c	Sun Jan 26 16:50:28 2003
@@ -1612,7 +1612,7 @@ PP(pp_dbstate)
 
 	push_return(PL_op->op_next);
 	PUSHBLOCK(cx, CXt_SUB, SP);
-	PUSHSUB(cx);
+	PUSHSUB_DB(cx);
 	CvDEPTH(cv)++;
 	(void)SvREFCNT_inc(cv);
 	PAD_SET_CUR(CvPADLIST(cv),1);



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About