summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cop.h14
-rw-r--r--pp_ctl.c3
-rw-r--r--pp_hot.c2
-rw-r--r--pp_sort.c2
4 files changed, 10 insertions, 11 deletions
diff --git a/cop.h b/cop.h
index 1fa485eb73..e2d85c1a60 100644
--- a/cop.h
+++ b/cop.h
@@ -595,7 +595,7 @@ struct block_format {
* The context frame holds a reference to the CV so that it can't be
* freed while we're executing it */
-#define PUSHSUB_BASE(cx) \
+#define PUSHSUB_BASE(cx, cv, hasargs) \
ENTRY_PROBE(CvNAMED(cv) \
? HEK_KEY(CvNAME_HEK(cv)) \
: GvENAME(CvGV(cv)), \
@@ -620,17 +620,17 @@ struct block_format {
? 0 : (U8)func(aTHX) \
)
-#define PUSHSUB(cx) \
+#define PUSHSUB(cx, cv, hasargs) \
{ \
U8 phlags = PUSHSUB_GET_LVALUE_MASK(Perl_was_lvalue_sub); \
- PUSHSUB_BASE(cx) \
+ PUSHSUB_BASE(cx, cv, hasargs) \
cx->blk_u16 = PL_op->op_private & \
(phlags|OPpDEREF); \
}
/* variant for use by OP_DBSTATE, where op_private holds hint bits */
-#define PUSHSUB_DB(cx) \
- PUSHSUB_BASE(cx) \
+#define PUSHSUB_DB(cx, cv, hasargs) \
+ PUSHSUB_BASE(cx, cv, hasargs) \
cx->blk_u16 = 0;
@@ -1345,7 +1345,7 @@ See L<perlcall/LIGHTWEIGHT CALLBACKS>.
PUSHSTACKi(PERLSI_MULTICALL); \
PUSHBLOCK(cx, (CXt_SUB|CXp_MULTICALL|flags), gimme, \
PL_stack_sp, PL_savestack_ix); \
- PUSHSUB(cx); \
+ PUSHSUB(cx, cv, hasargs); \
SAVEOP(); \
saveix_floor = PL_savestack_ix; \
if (!(flags & CXp_SUB_RE_FAKE)) \
@@ -1394,7 +1394,7 @@ See L<perlcall/LIGHTWEIGHT CALLBACKS>.
assert(CxMULTICALL(cx)); \
CX_POPSUB_COMMON(cx); \
cx->cx_type = (CXt_SUB|CXp_MULTICALL|flags); \
- PUSHSUB(cx); \
+ PUSHSUB(cx, cv, hasargs); \
if (!(flags & CXp_SUB_RE_FAKE)) \
CvDEPTH(cv)++; \
if (CvDEPTH(cv) >= 2) \
diff --git a/pp_ctl.c b/pp_ctl.c
index f5739687b9..7272e8353e 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2013,9 +2013,8 @@ PP(pp_dbstate)
return NORMAL;
}
else {
- U8 hasargs = 0;
PUSHBLOCK(cx, CXt_SUB, gimme, SP, PL_savestack_ix);
- PUSHSUB_DB(cx);
+ PUSHSUB_DB(cx, cv, 0);
cx->blk_sub.retop = PL_op->op_next;
SAVEI32(PL_debug);
diff --git a/pp_hot.c b/pp_hot.c
index 647e398e6c..5e54622251 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -3854,7 +3854,7 @@ PP(pp_entersub)
gimme = GIMME_V;
PUSHBLOCK(cx, CXt_SUB, gimme, MARK, old_savestack_ix);
hasargs = cBOOL(PL_op->op_flags & OPf_STACKED);
- PUSHSUB(cx);
+ PUSHSUB(cx, cv, hasargs);
cx->blk_sub.retop = PL_op->op_next;
padlist = CvPADLIST(cv);
diff --git a/pp_sort.c b/pp_sort.c
index e910662794..2b1147ffc9 100644
--- a/pp_sort.c
+++ b/pp_sort.c
@@ -1671,7 +1671,7 @@ PP(pp_sort)
PUSHBLOCK(cx, CXt_NULL, gimme, PL_stack_base, old_savestack_ix);
if (!(flags & OPf_SPECIAL)) {
cx->cx_type = CXt_SUB|CXp_MULTICALL;
- PUSHSUB(cx);
+ PUSHSUB(cx, cv, hasargs);
if (!is_xsub) {
PADLIST * const padlist = CvPADLIST(cv);