summaryrefslogtreecommitdiff
path: root/ext/B/B.pm
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2007-12-26 17:03:56 +0000
committerNicholas Clark <nick@ccl4.org>2007-12-26 17:03:56 +0000
commit4df7f6afd80e96d28fd18bba9dda8b38b6ed6700 (patch)
tree4a12163f0a4326186eaaa2db0ba65cb330932dc6 /ext/B/B.pm
parent0707d6cc81b12c5d582707b1575b1be4695dd7fc (diff)
downloadperl-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.pm12
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