This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to B::Debug 1.18
authorSteve Hay <steve.m.hay@googlemail.com>
Fri, 17 Aug 2012 17:41:02 +0000 (18:41 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Fri, 17 Aug 2012 18:09:51 +0000 (19:09 +0100)
Porting/Maintainers.pl
cpan/B-Debug/Debug.pm
pod/perldelta.pod

index 4fd3e4a..180f560 100755 (executable)
@@ -287,7 +287,7 @@ use File::Glob qw(:case);
 
     'B::Debug' => {
         'MAINTAINER'   => 'rurban',
-        'DISTRIBUTION' => 'RURBAN/B-Debug-1.17.tar.gz',
+        'DISTRIBUTION' => 'RURBAN/B-Debug-1.18.tar.gz',
         'FILES'        => q[cpan/B-Debug],
         'EXCLUDED'     => ['t/pod.t'],
         'UPSTREAM'     => 'cpan',
index fb8db3f..31b0e28 100644 (file)
@@ -1,6 +1,6 @@
 package B::Debug;
 
-our $VERSION = '1.17';
+our $VERSION = '1.18';
 
 use strict;
 require 5.006;
@@ -285,11 +285,16 @@ EOT
 sub B::AV::debug {
     my ($av) = @_;
     $av->B::SV::debug;
+    _array_debug($av);
+}
+
+sub _array_debug {
+    my ($av) = @_;
     # tied arrays may leave out FETCHSIZE
     my (@array) = eval { $av->ARRAY; };
     print "\tARRAY\t\t(", join(", ", map("0x" . $$_, @array)), ")\n";
     my $fill = eval { scalar(@array) };
-    if ($Config{'useithreads'}) {
+    if ($Config{'useithreads'} && class($av) ne 'PADLIST') {
       printf <<'EOT', $fill, $av->MAX, $av->OFF;
        FILL            %d
        MAX             %d
@@ -353,6 +358,15 @@ sub B::SPECIAL::debug {
     print exists $specialsv_name[$i] ? $specialsv_name[$i] : "", "\n";
 }
 
+sub B::PADLIST::debug {
+    my ($padlist) = @_;
+    printf <<'EOT', class($padlist), $$padlist, $padlist->REFCNT;
+%s (0x%x)
+       REFCNT          %d
+EOT
+    _array_debug($padlist);
+}
+
 sub compile {
     my $order = shift;
     B::clearsym();
@@ -417,3 +431,4 @@ Copyright (c) 2008, 2010 Reini Urban
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 
 =cut
+
index f0ae626..7624cac 100644 (file)
@@ -131,6 +131,11 @@ a sub and a format share the same name, it will dump both.
 
 =item *
 
+L<B::Debug> has been upgraded from version 1.17 to 1.18.  This adds support
+(experimentally) for the new C<B::PADLIST>.
+
+=item *
+
 L<B::Deparse> has been upgraded from version 1.15 to 1.16.  It now deparses
 loop controls with the correct precedence, and multiple statements in a
 C<format> line are also now deparsed correctly.