Change 32651 by [EMAIL PROTECTED] on 2007/12/19 15:00:53
Upgrade to B-Lint-1.11
Affected files ...
... //depot/perl/MANIFEST#1647 edit
... //depot/perl/ext/B/B/Lint.pm#26 edit
... //depot/perl/ext/B/B/Lint/Debug.pm#1 add
Differences ...
==== //depot/perl/MANIFEST#1647 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#1646~32650~ 2007-12-19 06:30:46.000000000 -0800
+++ perl/MANIFEST 2007-12-19 07:00:53.000000000 -0800
@@ -76,6 +76,7 @@
ext/B/B/Debug.pm Compiler Debug backend
ext/B/B/Deparse.pm Compiler Deparse backend
ext/B/B/Lint.pm Compiler Lint backend
+ext/B/B/Lint/Debug.pm Adds debugging stringification to B::
ext/B/B.pm Compiler backend support functions and methods
ext/B/B/Showlex.pm Compiler Showlex backend
ext/B/B/Terse.pm Compiler Terse backend
==== //depot/perl/ext/B/B/Lint.pm#26 (text) ====
Index: perl/ext/B/B/Lint.pm
--- perl/ext/B/B/Lint.pm#25~31294~ 2007-05-28 06:36:43.000000000 -0700
+++ perl/ext/B/B/Lint.pm 2007-12-19 07:00:53.000000000 -0800
@@ -1,6 +1,6 @@
package B::Lint;
-our $VERSION = '1.09'; ## no critic
+our $VERSION = '1.11'; ## no critic
=head1 NAME
@@ -185,6 +185,10 @@
Malcolm Beattie, [EMAIL PROTECTED]
+=head1 ACKNOWLEDGEMENTS
+
+Sebastien Aperghis-Tramoni - bug fixes
+
=cut
use strict;
@@ -347,8 +351,8 @@
my @elts = map +( $_->ARRAY )[$ix], @entire_pad;
($elt) = first {
eval { $_->isa('B::SV') } ? $_ : ();
- }
- @elts[ 0, reverse 1 .. $#elts ];
+ }
+ @elts[ 0, reverse 1 .. $#elts ];
return $elt;
};
}
@@ -511,7 +515,7 @@
# scratchpad to find things. I suppose this is so a optree can be
# shared between threads and all symbol table muckery will just get
# written to a scratchpad.
-*B::PADOP::lint = \&B::SVOP::lint;
+*B::PADOP::lint = *B::PADOP::lint = \&B::SVOP::lint;
sub B::SVOP::lint {
my ($op) = @_;
==== //depot/perl/ext/B/B/Lint/Debug.pm#1 (text) ====
Index: perl/ext/B/B/Lint/Debug.pm
--- /dev/null 2007-12-15 13:29:14.653686300 -0800
+++ perl/ext/B/B/Lint/Debug.pm 2007-12-19 07:00:53.000000000 -0800
@@ -0,0 +1,65 @@
+package B::Lint::Debug;
+
+=head1 NAME
+
+B::Lint::Debug - Adds debugging stringification to B::
+
+=head1 DESCRIPTION
+
+This module injects stringification to a B::OP*/B::SPECIAL. This
+should not be loaded unless you're debugging.
+
+=cut
+
+package B::SPECIAL;
+use overload '""' => sub {
+ my $self = shift @_;
+ "SPECIAL($$self)";
+};
+
+package B::OP;
+use overload '""' => sub {
+ my $self = shift @_;
+ my $class = ref $self;
+ $class =~ s/\AB:://xms;
+ my $name = $self->name;
+ "$class($name)";
+};
+
+package B::SVOP;
+use overload '""' => sub {
+ my $self = shift @_;
+ my $class = ref $self;
+ $class =~ s/\AB:://xms;
+ my $name = $self->name;
+ "$class($name," . $self->sv . "," . $self->gv . ")";
+};
+
+package B::SPECIAL;
+sub DESTROY { }
+our $AUTOLOAD;
+
+sub AUTOLOAD {
+ my $cx = 0;
+ print "AUTOLOAD $AUTOLOAD\n";
+
+ package DB;
+ while ( my @stuff = caller $cx ) {
+
+ print "$cx: [EMAIL PROTECTED]::args] [EMAIL PROTECTED]";
+ if ( ref $DB::args[0] ) {
+ if ( $DB::args[0]->can('padix') ) {
+ print " PADIX: " . $DB::args[0]->padix . "\n";
+ }
+ if ( $DB::args[0]->can('targ') ) {
+ print " TARG: " . $DB::args[0]->targ . "\n";
+ for ( B::Lint::cv()->PADLIST->ARRAY ) {
+ print +( $_->ARRAY )[ $DB::args[0]->targ ] . "\n";
+ }
+ }
+ }
+ ++$cx;
+ }
+}
+
+1;
End of Patch.