summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Mitchell <davem@iabyn.com>2022-11-16 10:30:10 +0000
committerYves Orton <demerphq@gmail.com>2023-02-28 20:53:51 +0800
commit0b6c6e4e306c6b4830a1cc197230ebdbb1c92140 (patch)
tree7061becfd51b9f75d687999e3058f2b24c7fd81c
parente59c0ae3bee1fdc875ad714006af9072efee840a (diff)
downloadperl-0b6c6e4e306c6b4830a1cc197230ebdbb1c92140.tar.gz
don't call pp_pushmark() to push a mark
A few places were calling pp_pushmark(), when they should have been just directly doing a PUSHMARK()
-rw-r--r--pp.c3
-rw-r--r--pp_ctl.c6
2 files changed, 4 insertions, 5 deletions
diff --git a/pp.c b/pp.c
index e2a70151b3..dd47b7330a 100644
--- a/pp.c
+++ b/pp.c
@@ -6748,8 +6748,7 @@ PP(pp_coreargs)
to come in between two things this function does (stack reset and
arg pushing). This seems the easiest way to do it. */
if (pushmark) {
- PUTBACK;
- (void)Perl_pp_pushmark(aTHX);
+ PUSHMARK(SP);
}
EXTEND(SP, maxargs == I32_MAX ? numargs : maxargs);
diff --git a/pp_ctl.c b/pp_ctl.c
index a7a0cea607..b16afcebcd 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -978,8 +978,8 @@ PP(pp_grepstart)
RETURNOP(PL_op->op_next->op_next);
}
PL_stack_sp = PL_stack_base + TOPMARK + 1;
- Perl_pp_pushmark(aTHX); /* push dst */
- Perl_pp_pushmark(aTHX); /* push src */
+ PUSHMARK(PL_stack_sp); /* push dst */
+ PUSHMARK(PL_stack_sp); /* push src */
ENTER_with_name("grep"); /* enter outer scope */
SAVETMPS;
@@ -997,7 +997,7 @@ PP(pp_grepstart)
PUTBACK;
if (PL_op->op_type == OP_MAPSTART)
- Perl_pp_pushmark(aTHX); /* push top */
+ PUSHMARK(PL_stack_sp); /* push top */
return cLOGOPx(PL_op->op_next)->op_other;
}