#
package B;
-our $VERSION = '1.06';
+our $VERSION = '1.07';
use XSLoader ();
require Exporter;
@B::PVIV::ISA = qw(B::PV B::IV);
@B::PVNV::ISA = qw(B::PV B::NV);
@B::PVMG::ISA = 'B::PVNV';
-@B::PVLV::ISA = 'B::GV';
+# Change in the inheritance hierarchy post 5.8
+@B::PVLV::ISA = $] > 5.009 ? 'B::GV' : 'B::PVMG';
@B::BM::ISA = 'B::PVMG';
@B::AV::ISA = 'B::PVMG';
@B::GV::ISA = 'B::PVMG';
B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG, B::BM, B::PVLV,
B::AV, B::HV, B::CV, B::GV, B::FM, B::IO. These classes correspond in
the obvious way to the underlying C structures of similar names. The
-inheritance hierarchy mimics the underlying C "inheritance":
+inheritance hierarchy mimics the underlying C "inheritance". For 5.9 and
+later this is:
B::SV
|
B::FM
+For 5.8 and earlier, PVLV is a direct subclass of PVMG, so the base of this
+diagram is
+
+ |
+ B::PVMG
+ |
+ +------+-----+----+------+-----+-----+
+ | | | | | | |
+ B::PVLV B::BM B::AV B::GV B::HV B::CV B::IO
+ |
+ |
+ B::FM
+
+
Access methods correspond to the underlying C macros for field access,
usually with the leading "class indication" prefix removed (Sv, Av,
Hv, ...). The leading prefix is only left in cases where its removal
specialsv_list[4] = pWARN_ALL;
specialsv_list[5] = pWARN_NONE;
specialsv_list[6] = pWARN_STD;
-#if PERL_VERSION <= 9
+#if PERL_VERSION <= 8
# define CVf_ASSERTION 0
#endif
#include "defsubs.h"
void
threadsv_names()
PPCODE:
+#if PERL_VERSION <= 8
+# ifdef USE_5005THREADS
+ int i;
+ STRLEN len = strlen(PL_threadsv_names);
+ EXTEND(sp, len);
+ for (i = 0; i < len; i++)
+ PUSHs(sv_2mortal(newSVpvn(&PL_threadsv_names[i], 1)));
+# endif
+#endif
#define OP_next(o) o->op_next
#define OP_sibling(o) o->op_sibling
# You may distribute under the terms of either the GNU General Public
# License or the Artistic License, as specified in the README file.
#
-package B::C::Section;
+
+package B::C;
our $VERSION = '1.04';
+package B::C::Section;
+
use B ();
use base B::Section;
long xcv_depth; /* >= 2 indicates recursive call */
AV * xcv_padlist;
CV * xcv_outside;
+EOT
+ print <<'EOT' if $] < 5.009;
+#ifdef USE_5005THREADS
+ perl_mutex *xcv_mutexp;
+ struct perl_thread *xcv_owner; /* current owner thread */
+#endif /* USE_5005THREADS */
+EOT
+ print <<'EOT';
cv_flags_t xcv_flags;
U32 xcv_outside_seq; /* the COP sequence (at the point of our
* compilation) in the lexically enclosing
use Config;
skip("Doesn't work with threaded perls",11)
- if $Config{useithreads};
+ if $Config{useithreads} || ($] < 5.009 && $Config{use5005threads});
runlint 'implicit-read', '1 for @ARGV', <<'RESULT', 'implicit-read in foreach';
Implicit use of $_ in foreach at -e line 1