Only allocate entries for @_ when the subroutine is first called.
authorNicholas Clark <nick@ccl4.org>
Sun, 30 May 2010 10:51:15 +0000 (11:51 +0100)
committerNicholas Clark <nick@ccl4.org>
Sun, 30 May 2010 10:55:42 +0000 (11:55 +0100)
commit77bac227771c643a8a6e305b2bac4665a8f772d1
treee3cc6f832c152ed512729dd78a483d833c06d00b
parentc85ae797ecb755d3bcfabd44aa268e3e6e2e7c13
Only allocate entries for @_ when the subroutine is first called.

Previously, @_ was allocated for every subroutine at compile time, with a
default sized AV, hence space for 4 entries. We don't actually need to
allocate the space for entries, as there is already a check at call time as to
whether @_ is long enough.

valgrind suggests that this saves allocating 23K (on a 64 bit platform) when
running pod2man on perlfunc.pod. As well as the absolute saving, there is also
benefit in deferring allocation for subroutines actually called - for a program
which forks, @_ is less likely to be in pages shared COW with the parent.

Resolves RT #72416.
pad.c