diff options
author | Richard Leach <richardleach@users.noreply.github.com> | 2021-04-08 00:42:47 +0100 |
---|---|---|
committer | Hugo van der Sanden <hv@crypt.org> | 2021-05-22 16:14:46 +0100 |
commit | 36f923e59e7f66d2c6cf187176f2cea3b7b0c43e (patch) | |
tree | ae49c9c6d7a611f63d9c2ca68bc90971ebdb6d0f /pad.c | |
parent | e92b9ddc13179b9220bebd7892b3c8bb1c2a93dc (diff) | |
download | perl-36f923e59e7f66d2c6cf187176f2cea3b7b0c43e.tar.gz |
Perl_pad_new: directly allocate SV* array, remove av_store() calls
Diffstat (limited to 'pad.c')
-rw-r--r-- | pad.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -220,17 +220,24 @@ Perl_pad_new(pTHX_ int flags) Newxz(padlist, 1, PADLIST); pad = newAV(); + Newxz(AvALLOC(pad), 4, SV *); /* Originally sized to + match av_extend default */ + AvARRAY(pad) = AvALLOC(pad); + AvMAX(pad) = 3; + AvFILLp(pad) = 0; /* @_ or NULL, set below. */ if (flags & padnew_CLONE) { AV * const a0 = newAV(); /* will be @_ */ - av_store(pad, 0, MUTABLE_SV(a0)); + AvARRAY(pad)[0] = MUTABLE_SV(a0); AvREIFY_only(a0); PadnamelistREFCNT(padname = PL_comppad_name)++; } else { padlist->xpadl_id = PL_padlist_generation++; - av_store(pad, 0, NULL); + /* Set implicitly through use of Newxz above + AvARRAY(pad)[0] = NULL; + */ padname = newPADNAMELIST(0); padnamelist_store(padname, 0, &PL_padname_undef); } |