diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-08-16 16:46:20 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-08-21 16:51:14 -0700 |
commit | 7261499db89d7afd6c64079406dc32f10acfe512 (patch) | |
tree | d28b4da71ab3604a3a0b1258a85fe498d1615cef /embed.h | |
parent | b70d55581aad461af858eb07a2e80ed5fcc653c1 (diff) | |
download | perl-7261499db89d7afd6c64079406dc32f10acfe512.tar.gz |
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.
Diffstat (limited to 'embed.h')
-rw-r--r-- | embed.h | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1001,6 +1001,7 @@ #define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c) #define amagic_is_enabled(a) Perl_amagic_is_enabled(aTHX_ a) #define apply(a,b,c) Perl_apply(aTHX_ a,b,c) +#define av_extend_guts(a,b,c,d,e) Perl_av_extend_guts(aTHX_ a,b,c,d,e) #define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c) #define block_end(a,b) Perl_block_end(aTHX_ a,b) #define block_start(a) Perl_block_start(aTHX_ a) @@ -1179,6 +1180,7 @@ #define pad_leavemy() Perl_pad_leavemy(aTHX) #define pad_push(a,b) Perl_pad_push(aTHX_ a,b) #define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b) +#define padlist_store(a,b,c) Perl_padlist_store(aTHX_ a,b,c) #define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a) #define parser_free(a) Perl_parser_free(aTHX_ a) #define peep(a) Perl_peep(aTHX_ a) |