This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Stop padlists from being AVs
authorFather Chrysostomos <sprout@cpan.org>
Thu, 16 Aug 2012 23:46:20 +0000 (16:46 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Tue, 21 Aug 2012 23:51:14 +0000 (16:51 -0700)
commit7261499db89d7afd6c64079406dc32f10acfe512
treed28b4da71ab3604a3a0b1258a85fe498d1615cef
parentb70d55581aad461af858eb07a2e80ed5fcc653c1
Stop padlists from being AVs

In order to fix a bug, I need to add new fields to padlists.  But I
cannot easily do that as long as they are AVs.

So I have created a new padlist struct.

This not only allows me to extend the padlist struct with new members
as necessary, but also saves memory, as we now have a three-pointer
struct where before we had a whole SV head (3-4 pointers) + XPVAV (5
pointers).

This will unfortunately break half of CPAN, but the pad API docs
clearly say this:

    NOTE: this function is experimental and may change or be
    removed without notice.

This would have broken B::Debug, but a patch sent upstream has already
been integrated into blead with commit 9d2d23d981.
13 files changed:
av.c
dump.c
embed.fnc
embed.h
ext/B/B.xs
ext/B/B/Xref.pm
ext/B/typemap
ext/XS-APItest/APItest.xs
pad.c
pad.h
perl.h
proto.h
sv.c