diff options
author | Nicholas Clark <nick@ccl4.org> | 2007-12-26 17:03:56 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2007-12-26 17:03:56 +0000 |
commit | 4df7f6afd80e96d28fd18bba9dda8b38b6ed6700 (patch) | |
tree | 4a12163f0a4326186eaaa2db0ba65cb330932dc6 /ext/B/B.pm | |
parent | 0707d6cc81b12c5d582707b1575b1be4695dd7fc (diff) | |
download | perl-4df7f6afd80e96d28fd18bba9dda8b38b6ed6700.tar.gz |
Eliminate SVt_RV, and use SVt_IV to store plain references.
This frees up a scalar type for first class regular expressions.
p4raw-id: //depot/perl@32734
Diffstat (limited to 'ext/B/B.pm')
-rw-r--r-- | ext/B/B.pm | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ext/B/B.pm b/ext/B/B.pm index 7c606e3c59..9dc85bb4bf 100644 --- a/ext/B/B.pm +++ b/ext/B/B.pm @@ -7,7 +7,7 @@ # package B; -our $VERSION = '1.17'; +our $VERSION = '1.18'; use XSLoader (); require Exporter; @@ -33,7 +33,8 @@ use strict; @B::PV::ISA = 'B::SV'; @B::IV::ISA = 'B::SV'; @B::NV::ISA = 'B::SV'; -@B::RV::ISA = 'B::SV'; +# RV is eliminated with 5.11.0, but effectively is a specialisation of IV now. +@B::RV::ISA = $] > 5.011 ? 'B::IV' : 'B::SV'; @B::PVIV::ISA = qw(B::PV B::IV); @B::PVNV::ISA = qw(B::PVIV B::NV); @B::PVMG::ISA = 'B::PVNV'; @@ -574,8 +575,8 @@ give incomprehensible results, or worse. B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG, B::BM (5.9.5 and earlier), 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". For 5.9.5 -and later this is: +The inheritance hierarchy mimics the underlying C "inheritance". For the +5.10, 5.10.1 I<etc> this is: B::SV | @@ -601,6 +602,9 @@ and later this is: B::PVLV B::FM +For 5.11.0 and later, B::RV is abolished, and IVs can be used to store +references. + For 5.9.0 and earlier, PVLV is a direct subclass of PVMG, and BM is still present as a distinct type, so the base of this diagram is |