This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
harmonise S_pushav() and pp_padav()
authorDavid Mitchell <davem@iabyn.com>
Wed, 19 Jul 2017 13:04:36 +0000 (14:04 +0100)
committerDavid Mitchell <davem@iabyn.com>
Thu, 27 Jul 2017 10:30:24 +0000 (11:30 +0100)
commitea710183d400fe5d3e69cf573c0c9c6540ce4c5a
treee09befefcebbdf5d65ba66e10e0d7f7e8c4d129a
parent87c9dcef06a83be89762b31d506a075cd0c79990
harmonise S_pushav() and pp_padav()

These two functions contain a similar block of code to push an array
onto the stack. However they have some slight differences, which this
commit removes. This will allow padav() to call S_pushav() in the next
commit.

The two differences are:

1) S_pushav() when pushing elements of a magical array, calls mg_get()
on each element. This is to ensure that e.g. in

    sub f { /..../; @+ }

when the elements of @+ are returned, they are set *before* the current
pattern goes out of scope.

However, since probably v5.11.5-132-gfd69380 and v5.13.0-22-g2d961f6,
the mg_get is no longer required.

2) S_pushav() uses the SvRMAGICAL() test to decide whether its unsafe
to access AvARRAY directly; pp_padav() uses SvMAGICAL(). The latter
seems too severe, so I've changed it to SvRMAGICAL().
pp_hot.c