From e92b9ddc13179b9220bebd7892b3c8bb1c2a93dc Mon Sep 17 00:00:00 2001 From: Richard Leach Date: Wed, 7 Apr 2021 23:29:44 +0100 Subject: Perl_pad_push: directly allocate SV* array, remove av_store() calls --- pad.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'pad.c') diff --git a/pad.c b/pad.c index 4945268730..f74def114a 100644 --- a/pad.c +++ b/pad.c @@ -2396,6 +2396,10 @@ Perl_pad_push(pTHX_ PADLIST *padlist, int depth) PADNAME ** const names = PadnamelistARRAY((PADNAMELIST *)svp[0]); AV *av; + Newxz( AvALLOC(newpad), ix + 1, SV *); + AvARRAY(newpad) = AvALLOC(newpad); + AvMAX(newpad) = AvFILLp(newpad) = ix; + for ( ;ix > 0; ix--) { SV *sv; if (names_fill >= ix && PadnameLEN(names[ix])) { @@ -2424,10 +2428,10 @@ Perl_pad_push(pTHX_ PADLIST *padlist, int depth) sv = newSV(0); SvPADTMP_on(sv); } - av_store(newpad, ix, sv); + AvARRAY(newpad)[ix] = sv; } av = newAV(); - av_store(newpad, 0, MUTABLE_SV(av)); + AvARRAY(newpad)[0] = MUTABLE_SV(av); AvREIFY_only(av); padlist_store(padlist, depth, newpad); -- cgit v1.2.1