diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-08-05 00:15:52 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-08-05 13:18:50 -0700 |
commit | f2da823f484d421a6bb57e32e442b19b553f4b35 (patch) | |
tree | a1257b3e9d3f0b55dd912ce2b17f9fde7dff1492 /ext | |
parent | 9a7154347977e29a815d93c0097c5a9b660006b2 (diff) | |
download | perl-f2da823f484d421a6bb57e32e442b19b553f4b35.tar.gz |
Make PL_(top|body|form)target PVIVs
These are only used for storing a string and an IV.
Making them into full-blown SVt_PVFMs is overkill.
FmLINES was only being used on these three scalars. So make it use
the SvIVX field. struct xpvfm no longer needs an xfm_lines member,
because SVt_PVFMs no longer use it.
This also causes a TODO test in taint.t to start passing, but I do
not fully understand why. But at least that’s progress. :-)
Diffstat (limited to 'ext')
-rw-r--r-- | ext/B/B.xs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ext/B/B.xs b/ext/B/B.xs index b503611c64..9c9133b9ff 100644 --- a/ext/B/B.xs +++ b/ext/B/B.xs @@ -1446,8 +1446,6 @@ MODULE = B PACKAGE = B::IV #define PVAV_max_ix sv_SSize_tp | offsetof(struct xpvav, xav_max) -#define PVFM_lines_ix sv_IVp | offsetof(struct xpvfm, xfm_lines) - #define PVCV_stash_ix sv_SVp | offsetof(struct xpvcv, xcv_stash) #define PVCV_gv_ix sv_SVp | offsetof(struct xpvcv, xcv_gv) #define PVCV_file_ix sv_char_pp | offsetof(struct xpvcv, xcv_file) @@ -1504,7 +1502,6 @@ IVX(sv) B::IO::IoTYPE = PVIO_type_ix B::IO::IoFLAGS = PVIO_flags_ix B::AV::MAX = PVAV_max_ix - B::FM::LINES = PVFM_lines_ix B::CV::STASH = PVCV_stash_ix B::CV::GV = PVCV_gv_ix B::CV::FILE = PVCV_file_ix @@ -1961,6 +1958,17 @@ AvFLAGS(av) #endif +MODULE = B PACKAGE = B::FM PREFIX = Fm + +#if PERL_VERSION > 7 || (PERL_VERSION == 7 && PERL_SUBVERSION >= 3) +# undef FmLINES +# define FmLINES(sv) 0 +#endif + +IV +FmLINES(form) + B::FM form + MODULE = B PACKAGE = B::CV PREFIX = Cv U32 |