summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/B.pm
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-04-23 21:46:20 +0000
committerKarl Berry <karl@freefriends.org>2014-04-23 21:46:20 +0000
commit300c1eb6d37d46078d448d6d58938d5a80cd68ff (patch)
tree23a0a8b9f8f5460b405119c4d3c163d2d488ca5e /Master/tlpkg/tlperl/lib/B.pm
parented55d86b7c5e18f6eccce80a1fb1423ca40a23b5 (diff)
(tl)perl 5.18.2 for windows from siep
git-svn-id: svn://tug.org/texlive/trunk@33648 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/B.pm')
-rw-r--r--Master/tlpkg/tlperl/lib/B.pm49
1 files changed, 40 insertions, 9 deletions
diff --git a/Master/tlpkg/tlperl/lib/B.pm b/Master/tlpkg/tlperl/lib/B.pm
index 75ead53a15f..881b68b4e0e 100644
--- a/Master/tlpkg/tlperl/lib/B.pm
+++ b/Master/tlpkg/tlperl/lib/B.pm
@@ -15,7 +15,7 @@ require Exporter;
# walkoptree comes from B.xs
BEGIN {
- $B::VERSION = '1.35';
+ $B::VERSION = '1.42_02';
@B::EXPORT_OK = ();
# Our BOOT code needs $VERSION set, and will append to @EXPORT_OK.
@@ -35,8 +35,7 @@ push @B::EXPORT_OK, (qw(minus_c ppname save_BEGINs
parents comppadlist sv_undef compile_stats timing_info
begin_av init_av check_av end_av regex_padav dowarn
defstash curstash warnhook diehook inc_gv @optype
- @specialsv_name
- ), $] > 5.009 && 'unitcheck_av');
+ @specialsv_name unitcheck_av));
@B::SV::ISA = 'B::OBJECT';
@B::NULL::ISA = 'B::SV';
@@ -49,10 +48,8 @@ push @B::EXPORT_OK, (qw(minus_c ppname save_BEGINs
@B::PVNV::ISA = qw(B::PVIV B::NV);
@B::PVMG::ISA = 'B::PVNV';
@B::REGEXP::ISA = 'B::PVMG' if $] >= 5.011;
-# Change in the inheritance hierarchy post 5.9.0
-@B::PVLV::ISA = $] > 5.009 ? 'B::GV' : 'B::PVMG';
-# BM is eliminated post 5.9.5, but effectively is a specialisation of GV now.
-@B::BM::ISA = $] > 5.009005 ? 'B::GV' : 'B::PVMG';
+@B::PVLV::ISA = 'B::GV';
+@B::BM::ISA = 'B::GV';
@B::AV::ISA = 'B::PVMG';
@B::GV::ISA = 'B::PVMG';
@B::HV::ISA = 'B::PVMG';
@@ -253,7 +250,8 @@ sub walksymtable {
my $fullname;
no strict 'refs';
$prefix = '' unless defined $prefix;
- while (($sym, $ref) = each %$symref) {
+ foreach my $sym ( sort keys %$symref ) {
+ $ref= $symref->{$sym};
$fullname = "*main::".$prefix.$sym;
if ($sym =~ /::$/) {
$sym = $prefix . $sym;
@@ -405,6 +403,8 @@ underlying structures are freed.
=item amagic_generation
Returns the SV object corresponding to the C variable C<amagic_generation>.
+As of Perl 5.18, this is just an alias to C<PL_na>, so its value is
+meaningless.
=item init_av
@@ -1014,6 +1014,10 @@ For constant subroutines, returns the constant SV returned by the subroutine.
=item const_sv
+=item NAME_HEK
+
+Returns the name of a lexical sub, otherwise C<undef>.
+
=back
=head2 B::HV Methods
@@ -1161,6 +1165,10 @@ Since Perl 5.9.5
Only when perl was compiled with ithreads.
+=item code_list
+
+Since perl 5.17.1
+
=back
=head2 B::SVOP METHOD
@@ -1211,7 +1219,7 @@ Only when perl was compiled with ithreads.
=item stashpv
-=item stashlen
+=item stashoff (threaded only)
=item file
@@ -1232,6 +1240,29 @@ Only when perl was compiled with ithreads.
=back
+=head2 $B::overlay
+
+Although the optree is read-only, there is an overlay facility that allows
+you to override what values the various B::*OP methods return for a
+particular op. C<$B::overlay> should be set to reference a two-deep hash:
+indexed by OP address, then method name. Whenever a an op method is
+called, the value in the hash is returned if it exists. This facility is
+used by B::Deparse to "undo" some optimisations. For example:
+
+
+ local $B::overlay = {};
+ ...
+ if ($op->name eq "foo") {
+ $B::overlay->{$$op} = {
+ name => 'bar',
+ next => $op->next->next,
+ };
+ }
+ ...
+ $op->name # returns "bar"
+ $op->next # returns the next op but one
+
+
=head1 AUTHOR
Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>