From eae3cc9643eecd5d8b27c8fb4a3dc3bfebaf57e3 Mon Sep 17 00:00:00 2001 From: Richard Leach Date: Sun, 20 Mar 2022 15:22:27 +0000 Subject: Move av_new_alloc from av.c to inline.h There was less benefit in doing this prior to newSV_type becoming an inline function. Now that it is, inlining av_new_alloc can help compilers eliminate redundant setting of AvMAX/AvFILLp and unnecessary branches of any following inlined calls to av_store_simple. --- av.c | 42 ------------------------------------------ 1 file changed, 42 deletions(-) (limited to 'av.c') diff --git a/av.c b/av.c index 090c5a93f4..81a7f19219 100644 --- a/av.c +++ b/av.c @@ -392,48 +392,6 @@ Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val) return &ary[key]; } -/* -=for apidoc av_new_alloc - -This implements L> -and L>, which are the public API for this -functionality. - -Creates a new AV and allocates its SV* array. - -This is similar to, but more efficient than doing: - - AV *av = newAV(); - av_extend(av, key); - -The size parameter is used to pre-allocate a SV* array large enough to -hold at least elements C<0..(size-1)>. C must be at least 1. - -The C parameter controls whether or not the array is NULL -initialized. - -=cut -*/ - -AV * -Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag) -{ - AV * const av = newAV(); - SV** ary; - PERL_ARGS_ASSERT_AV_NEW_ALLOC; - assert(size > 0); - - Newx(ary, size, SV*); /* Newx performs the memwrap check */ - AvALLOC(av) = ary; - AvARRAY(av) = ary; - AvMAX(av) = size - 1; - - if (zeroflag) - Zero(ary, size, SV*); - - return av; -} - /* =for apidoc av_make -- cgit v1.2.1