diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/B.pm')
-rw-r--r-- | Master/tlpkg/tlperl/lib/B.pm | 49 |
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> |