Hello community, here is the log from the commit of package perl-Devel-Caller for openSUSE:Factory checked in at 2013-06-09 16:40:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Devel-Caller (Old) and /work/SRC/openSUSE:Factory/.perl-Devel-Caller.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Devel-Caller" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Devel-Caller/perl-Devel-Caller.changes 2011-12-21 14:58:08.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.perl-Devel-Caller.new/perl-Devel-Caller.changes 2013-06-09 16:40:06.000000000 +0200 @@ -1,0 +2,7 @@ +Tue Jun 4 08:17:41 UTC 2013 - [email protected] + +- updated to 2.06 + Corrected some pod syntax RT#56456 + Handle the new padrange op added in 5.17 RT#81704 + +------------------------------------------------------------------- Old: ---- Devel-Caller-2.05.tar.gz New: ---- Devel-Caller-2.06.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Devel-Caller.spec ++++++ --- /var/tmp/diff_new_pack.1Ca351/_old 2013-06-09 16:40:07.000000000 +0200 +++ /var/tmp/diff_new_pack.1Ca351/_new 2013-06-09 16:40:07.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-Devel-Caller # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,12 +15,13 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + Name: perl-Devel-Caller -Version: 2.05 +Version: 2.06 Release: 0 %define cpan_name Devel-Caller Summary: meatier versions of C<caller> -License: GPL-1.0+ or Artistic-1.0 +License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/Devel-Caller/ Source: http://www.cpan.org/authors/id/R/RC/RCLAMP/%{cpan_name}-%{version}.tar.gz ++++++ Devel-Caller-2.05.tar.gz -> Devel-Caller-2.06.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-Caller-2.05/Changes new/Devel-Caller-2.06/Changes --- old/Devel-Caller-2.05/Changes 2010-04-08 14:39:24.000000000 +0200 +++ new/Devel-Caller-2.06/Changes 2013-01-16 11:27:17.000000000 +0100 @@ -1,3 +1,7 @@ +2.06 Wednesday 16th January, 2013 + Corrected some pod syntax RT#56456 + Handle the new padrange op added in 5.17 RT#81704 + 2.05 Thursday 8th April, 2010 Don't call B::PADOP->gv. Work by by Florian Ragwitz http://github.com/rafl/perl-devel-caller/commit/248a23390eef48a73bb717be085da58ce50ff784 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-Caller-2.05/MANIFEST new/Devel-Caller-2.06/MANIFEST --- old/Devel-Caller-2.05/MANIFEST 2010-04-08 14:42:05.000000000 +0200 +++ new/Devel-Caller-2.06/MANIFEST 2013-01-16 11:17:15.000000000 +0100 @@ -1,7 +1,8 @@ +META.yml +META.json MANIFEST Changes Makefile.PL lib/Devel/Caller.pm Caller.xs t/Devel-Caller.t -META.yml Module meta-data (added by MakeMaker) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-Caller-2.05/META.json new/Devel-Caller-2.06/META.json --- old/Devel-Caller-2.05/META.json 1970-01-01 01:00:00.000000000 +0100 +++ new/Devel-Caller-2.06/META.json 2013-01-16 11:27:56.000000000 +0100 @@ -0,0 +1,42 @@ +{ + "abstract" : "meatier versions of C<caller>", + "author" : [ + "Richard Clamp <[email protected]>" + ], + "dynamic_config" : 1, + "generated_by" : "ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.120921", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Devel-Caller", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "PadWalker" : "0.08", + "Test::More" : "0" + } + } + }, + "release_status" : "stable", + "version" : "2.06" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-Caller-2.05/META.yml new/Devel-Caller-2.06/META.yml --- old/Devel-Caller-2.05/META.yml 2010-04-08 14:42:05.000000000 +0200 +++ new/Devel-Caller-2.06/META.yml 2013-01-16 11:27:56.000000000 +0100 @@ -1,20 +1,23 @@ ---- #YAML:1.0 -name: Devel-Caller -version: 2.05 -abstract: ~ -author: [] -license: unknown -distribution_type: module +--- +abstract: 'meatier versions of C<caller>' +author: + - 'Richard Clamp <[email protected]>' +build_requires: + ExtUtils::MakeMaker: 0 configure_requires: - ExtUtils::MakeMaker: 0 -requires: - PadWalker: 0.08 - Test::More: 0 -no_index: - directory: - - t - - inc -generated_by: ExtUtils::MakeMaker version 6.48 + ExtUtils::MakeMaker: 0 +dynamic_config: 1 +generated_by: 'ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.120921' +license: perl meta-spec: - url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: Devel-Caller +no_index: + directory: + - t + - inc +requires: + PadWalker: 0.08 + Test::More: 0 +version: 2.06 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-Caller-2.05/Makefile.PL new/Devel-Caller-2.06/Makefile.PL --- old/Devel-Caller-2.05/Makefile.PL 2008-12-12 12:42:35.000000000 +0100 +++ new/Devel-Caller-2.06/Makefile.PL 2013-01-16 11:04:37.000000000 +0100 @@ -3,9 +3,12 @@ use warnings; use ExtUtils::MakeMaker; WriteMakefile( - 'NAME' => 'Devel::Caller', - 'VERSION_FROM' => 'lib/Devel/Caller.pm', - 'PREREQ_PM' => { + NAME => 'Devel::Caller', + AUTHOR => 'Richard Clamp <[email protected]>', + LICENSE => 'perl', + VERSION_FROM => 'lib/Devel/Caller.pm', + ABSTRACT_FROM => 'lib/Devel/Caller.pm', + PREREQ_PM => { 'Test::More' => 0, 'PadWalker' => '0.08' } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Devel-Caller-2.05/lib/Devel/Caller.pm new/Devel-Caller-2.06/lib/Devel/Caller.pm --- old/Devel-Caller-2.05/lib/Devel/Caller.pm 2010-04-08 14:39:39.000000000 +0200 +++ new/Devel-Caller-2.06/lib/Devel/Caller.pm 2013-01-16 11:27:17.000000000 +0100 @@ -1,13 +1,13 @@ use strict; package Devel::Caller; use warnings; -use B; +use B qw( peekop ); use PadWalker (); use XSLoader; use base qw( Exporter ); use 5.008; -our $VERSION = '2.05'; +our $VERSION = '2.06'; XSLoader::load __PACKAGE__, $VERSION; our @EXPORT_OK = qw( caller_cv caller_args caller_vars called_with called_as_method ); @@ -21,20 +21,23 @@ our $DEBUG = 0; +# scan forward through the ops noting the pushmark or a padrange ops. +# These indicate the start of a subroutine call. We're looking for the most +# recent one before the subroutine invocation (the entersub). sub scan_forward { my $op = shift; - die "was expecting a pushmark, not a " . $op->name - if ($op->name ne "pushmark"); + die "was expecting a pushmark or a padrange, not a " . $op->name + if ($op->name !~ /^(?:pushmark|padrange)$/); my @stack; for (; $op && $op->name ne 'entersub'; $op = $op->next) { - print "SCAN op $op ", $op->name, "\n" if $DEBUG; - if ($op->name eq "pushmark") { - print "push $op\n" if $DEBUG; + print "SCAN ", peekop($op), "\n" if $DEBUG; + if ($op->name eq "pushmark" or $op->name eq "padrange") { + print " PUSH\n" if $DEBUG; push @stack, $op; } elsif (0) { # op consumes a mark - print "pop\n" if $DEBUG; + print " POP\n" if $DEBUG; pop @stack; } } @@ -52,42 +55,52 @@ my $padn = $pad->ARRAYelt( 0 ); my $padv = $pad->ARRAYelt( 1 ); - print $op->name, "\n" if $DEBUG; + print "Context OP: ", peekop($op), "\n" if $DEBUG; $op = scan_forward( $op ); - print $op->name, "\n" if $DEBUG; + print "Scanned forward to ", peekop($op), "\n" if $DEBUG; my @return; - my ($prev, $skip); - $skip = 0; - while (($prev = $op) && ($op = $op->next) && ($op->name ne "entersub")) { - print "op $op ", $op->name, "\n" if $DEBUG; - if ($op->name eq "pushmark") { - $skip = !$skip; - } - elsif ($op->name =~ "pad(sv|av|hv)") { - next if $skip; - print "PAD skip:$skip\n" if $DEBUG; + my $prev; + # We're scanning through looking for ops which are pushing + # variables onto the stack (/pad(sv|av|hv)/ push from the pad, + # /gvsv|rv2([ahg]v/ are from globs. + for (; $op && $op->name ne 'entersub'; ($prev = $op) && ($op = $op->next)) { + printf "Loop: %s %s targ: %d\n", peekop($op), $op->name, $op->targ if $DEBUG; + + if ($op->name eq "padrange") { + # A padrange is a 5.17 optimisation that uses a single op to + # load multiple pad variables onto the stack. The old ops + # are preserved and are reachable as the padrange's sibling + # so that B::Deparse can pessimise it back to that state. + # + # http://perl5.git.perl.org/perl.git/commitdiff/0fe870f5 + # http://perl5.git.perl.org/perl.git/commitdiff/a7fd8ef6 + # + # We could use the B::Deparse method, but it's probably simpler if + # we just reassign $op. + print "padrange, diverting down ", $prev->sibling, "\n" if $DEBUG; + $op = $op->sibling; + } + + if ($op->name =~ "pad(sv|av|hv)") { if ($op->next->next->name eq "sassign") { - $skip = 0; + print "sassign in two ops, this is the target skipping\n" if $DEBUG; next; } - print "targ: ", $op->targ, "\n" if $DEBUG; - my $name = $padn->ARRAYelt( $op->targ )->PVX; - my $value = $padv->ARRAYelt( $op->targ )->object_2svref; - push @return, $want_names ? $name : $value; - next; - } - elsif ($op->name eq "gv") { + print "Copying from pad\n" if $DEBUG; + if ($want_names) { + push @return, $padn->ARRAYelt( $op->targ )->PVX; + } + else { + push @return, $padv->ARRAYelt( $op->targ )->object_2svref; + } next; } elsif ($op->name =~ /gvsv|rv2(av|hv|gv)/) { - print "GV skip:$skip\n" if $DEBUG; - if ($op->next->next->name eq "sassign") { - $skip = 0; - print "skipped\n" if $DEBUG; + print "sassign in two ops, this is the target, skipping\n" if $DEBUG; next; } @@ -129,9 +142,8 @@ next; } elsif ($op->name eq "const") { - print "const $op skip:$skip\n" if $DEBUG; if ($op->next->next->name eq "sassign") { - $skip = 0; + print "sassign in two ops, this is the target, skipping\n" if $DEBUG; next; } @@ -148,7 +160,7 @@ my $op = _context_op( PadWalker::_upcontext( $level + 1 )); print "called_as_method: $op\n" if $DEBUG; - die "was expecting a pushmark, not a ". $op->name + die "was expecting a pushmark or pad, not a ". $op->name unless $op->name eq "pushmark"; while (($op = $op->next) && ($op->name ne "entersub")) { print "method: ", $op->name, "\n" if $DEBUG; @@ -210,6 +222,7 @@ C<called_as_method> returns true if the subroutine at $level was called as a method. +=back =head1 BUGS @@ -240,10 +253,10 @@ =head1 COPYRIGHT -Copyright (c) 2002, 2003, 2006, 2007, 2008, 2010 Richard Clamp. All Rights -Reserved. +Copyright (c) 2002, 2003, 2006, 2007, 2008, 2010, 2013 Richard Clamp. +All Rights Reserved. + This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself. =cut - -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
