summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-08-05 00:15:52 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-08-05 13:18:50 -0700
commitf2da823f484d421a6bb57e32e442b19b553f4b35 (patch)
treea1257b3e9d3f0b55dd912ce2b17f9fde7dff1492 /ext
parent9a7154347977e29a815d93c0097c5a9b660006b2 (diff)
downloadperl-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.xs14
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