This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
move POPBLOCK after arg stack munging
authorDavid Mitchell <davem@iabyn.com>
Sat, 10 Oct 2015 15:31:28 +0000 (16:31 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 3 Feb 2016 08:59:40 +0000 (08:59 +0000)
commit61d3b95a3e3c5316d83f1b0882dcab3dc36addc0
tree24988141464a88cf9bd6a6c06985a1a8f55a9552
parentc5369ccc48261c8bf4ac3023a24c6090f52a03c6
move POPBLOCK after arg stack munging

In various places where scope is left (pp_leave, pp_leavesub etc)
the perl argument stack is processed: a combination of shifting return
args down and mortalising or copying them. This is typically done in
S_leave_common() (although pp_leavesub(lv) roll their own).

Normally POPBLOCK() is called just before this, which
a) initialises cx;
b) sets newsp, gimme etc which are needed by S_leave_common()
c) restores a bunch of PL_ vars from the saved values in cx.

Logically, (c) should be the last thing done in the various pp_leave*
functions, as saving the vars is the first thing done in the various
pp_enter* functions.

This commit moves POPBLOCK after S_leave_common() as a first step towards
migrating it towards the end of the various functions.

It shouldn't make any functional difference, as the values of the various
restored vars aren't used by the arg munging code.
pp_ctl.c
pp_hot.c