Revision: 1435
Author: [email protected]
Date: Wed Dec 26 07:56:17 2012
Log: Fixed to work with perl v5.17+, specifically string eval changes
and hash randomization.
http://code.google.com/p/perl-devel-nytprof/source/detail?r=1435
Modified:
/trunk/Changes
/trunk/lib/Devel/NYTProf/Core.pm
/trunk/lib/Devel/NYTProf/FileInfo.pm
/trunk/lib/Devel/NYTProf/SubInfo.pm
/trunk/t/22-readstream.t
/trunk/t/test10.p
/trunk/t/test10.rdt
/trunk/t/test10.x
/trunk/t/test22-strevala.p
/trunk/t/test22-strevala.rdt
/trunk/t/test61-submerge.p
/trunk/t/test61-submerge.rdt
=======================================
--- /trunk/Changes Wed Oct 24 02:00:20 2012
+++ /trunk/Changes Wed Dec 26 07:56:17 2012
@@ -11,6 +11,9 @@
=head2 Changes in Devel::NYTProf 4.10
+ Fixed to work with perl v5.17+, specifically string eval
+ changes and hash randomization.
+
Corrected spelling thanks to Alessandro Ghedini @debian RT80370
=head2 Changes in Devel::NYTProf 4.09 (svn 1431) 15th Sep 2012
=======================================
--- /trunk/lib/Devel/NYTProf/Core.pm Sun Sep 16 04:31:07 2012
+++ /trunk/lib/Devel/NYTProf/Core.pm Wed Dec 26 07:56:17 2012
@@ -18,6 +18,9 @@
XSLoader::load('Devel::NYTProf', $VERSION);
+# Fudging for https://rt.cpan.org/Ticket/Display.html?id=82256
+$Devel::NYTProf::StrEvalTestPad = ($] <= 5.017003) ? ";\n" : "";
+
if (my $NYTPROF = $ENV{NYTPROF}) {
for my $optval ( $NYTPROF =~ /((?:[^\\:]+|\\.)+)/g) {
my ($opt, $val) = $optval =~ /^((?:[^\\=]+|\\.)+)=((?:[^\\=]+|
\\.)+)\z/;
=======================================
--- /trunk/lib/Devel/NYTProf/FileInfo.pm Sat Oct 2 14:52:02 2010
+++ /trunk/lib/Devel/NYTProf/FileInfo.pm Wed Dec 26 07:56:17 2012
@@ -571,7 +571,7 @@
for my $subname (sort keys %$subs_called) {
my @sc = @{$subs_called->{$subname}};
- $sc[NYTP_SCi_CALLING_SUB] = join "|", keys %{
$sc[NYTP_SCi_CALLING_SUB] };
+ $sc[NYTP_SCi_CALLING_SUB] = join "|", sort keys %{
$sc[NYTP_SCi_CALLING_SUB] };
printf $fh "%s%s%s%s%s%s%s[ %s ]\n",
$prefix, 'call', $separator,
=======================================
--- /trunk/lib/Devel/NYTProf/SubInfo.pm Wed Sep 29 13:51:15 2010
+++ /trunk/lib/Devel/NYTProf/SubInfo.pm Wed Dec 26 07:56:17 2012
@@ -393,7 +393,7 @@
for my $cp (@caller_places) {
my ($fid, $line, $sc) = @$cp;
my @sc = @$sc;
- $sc[NYTP_SCi_CALLING_SUB] = join "|", keys %{
$sc[NYTP_SCi_CALLING_SUB] };
+ $sc[NYTP_SCi_CALLING_SUB] = join "|", sort keys %{
$sc[NYTP_SCi_CALLING_SUB] };
printf $fh "%s%s%s%d:%d%s[ %s ]\n",
$prefix,
'called_by', $separator,
=======================================
--- /trunk/t/22-readstream.t Tue Jun 8 15:30:13 2010
+++ /trunk/t/22-readstream.t Wed Dec 26 07:56:17 2012
@@ -18,7 +18,7 @@
$ENV{NYTPROF} = "file=$out";
unlink $out;
-run_perl_command(q{-d:NYTProf -e "sub A { };" -e "1;" -e "A()"});
+run_perl_command(qq{-d:NYTProf -e "sub A { };" -e "1;" -e "A()
$Devel::NYTProf::StrEvalTestPad"});
my %prof;
my @seqn;
@@ -66,10 +66,11 @@
cmp_ok $attr{xs_version}, '>=', 2.1, 'xs_version';
cmp_ok $attr{basetime}, '>=', $^T, 'basetime';
-is_deeply $prof{SUB_INFO}, [
- [ 1, 1, 1, 'main::A' ],
- [ 1, 0, 0, 'main::BEGIN' ],
- [ 1, 1, 1, 'main::RUNTIME' ]
+my @sub_info_sorted = sort { $a->[3] cmp $b->[3] } @{$prof{SUB_INFO}};
+is_deeply \@sub_info_sorted, [
+ [1, 1, 1, "main::A"],
+ [1, 0, 0, "main::BEGIN"],
+ [1, 1, 1, "main::RUNTIME"],
];
$prof{SUB_CALLERS}[0][$_] = 0 for (3,4);
=======================================
--- /trunk/t/test10.p Sun Jul 5 05:48:56 2009
+++ /trunk/t/test10.p Wed Dec 26 07:56:17 2012
@@ -1,2 +1,2 @@
-$code = eval 'sub { sleep 1; }';
+$code = eval "sub { sleep 1; }$Devel::NYTProf::StrEvalTestPad";
$code->();
=======================================
--- /trunk/t/test10.rdt Fri Nov 19 08:25:55 2010
+++ /trunk/t/test10.rdt Wed Dec 26 07:56:17 2012
@@ -16,8 +16,7 @@
attribute xs_version 0
fid_block_time 1 1 [ 0 1 ]
fid_block_time 1 2 [ 0 1 ]
-fid_block_time 2 1 [ 0 1 ]
-fid_block_time 2 2 [ 0 1 ]
+fid_block_time 2 1 [ 0 2 ]
fid_fileinfo 1 [ test10.p 1 2 0 0 ]
fid_fileinfo 1 sub main::BEGIN 0-0
fid_fileinfo 1 sub main::CORE:sleep 0-0
@@ -29,12 +28,10 @@
fid_fileinfo 2 call 1 main::CORE:sleep [ 1 0 0 0 0 0 0
main::__ANON__[(eval 0)[test10.p:1]:1] ]
fid_line_time 1 1 [ 0 1 ]
fid_line_time 1 2 [ 0 1 ]
-fid_line_time 2 1 [ 0 1 ]
-fid_line_time 2 2 [ 0 1 ]
+fid_line_time 2 1 [ 0 2 ]
fid_sub_time 1 1 [ 0 1 ]
fid_sub_time 1 2 [ 0 1 ]
-fid_sub_time 2 1 [ 0 1 ]
-fid_sub_time 2 2 [ 0 1 ]
+fid_sub_time 2 1 [ 0 2 ]
profile_modes fid_block_time block
profile_modes fid_line_time line
profile_modes fid_sub_time sub
=======================================
--- /trunk/t/test10.x Sun Jul 5 05:48:56 2009
+++ /trunk/t/test10.x Wed Dec 26 07:56:17 2012
@@ -1,5 +1,5 @@
# Profile data generated by Devel::NYTProf::Reader
# More information at http://search.cpan.org/dist/Devel-NYTProf/
# Format: time,calls,time/call,code
-~1,1,0,$code = eval 'sub { sleep 1; }';
+~1,1,0,$code = eval "sub { sleep 1; }$Devel::NYTProf::StrEvalTestPad";
0,1,0,$code->();
=======================================
--- /trunk/t/test22-strevala.p Wed Jan 21 07:23:08 2009
+++ /trunk/t/test22-strevala.p Wed Dec 26 07:56:17 2012
@@ -1,6 +1,6 @@
# test merging of anon subs from evals
-my $code = 'sub { print "sub called\n" }';
+my $code = qq{ sub { print "sub called\n" }
$Devel::NYTProf::StrEvalTestPad};
# call once from particular line
eval($code)->();
=======================================
--- /trunk/t/test22-strevala.rdt Fri Nov 19 08:25:55 2010
+++ /trunk/t/test22-strevala.rdt Wed Dec 26 07:56:17 2012
@@ -29,23 +29,23 @@
fid_fileinfo 1 sub main::BEGIN 0-0
fid_fileinfo 1 sub main::CORE:print 0-0
fid_fileinfo 1 sub main::RUNTIME 1-1
-fid_fileinfo 1 call 6 main::__ANON__[(eval 1)[test22-strevala.p:6]:1] [ 1
0 0 0 0 0 0 main::RUNTIME ]
-fid_fileinfo 1 call 9 main::__ANON__[(eval 2)[test22-strevala.p:9]:1] [ 2
0 0 0 0 0 0 main::RUNTIME ]
+fid_fileinfo 1 call 6 main::__ANON__[(eval 1)[test22-strevala.p:6]:2] [ 1
0 0 0 0 0 0 main::RUNTIME ]
+fid_fileinfo 1 call 9 main::__ANON__[(eval 2)[test22-strevala.p:9]:2] [ 2
0 0 0 0 0 0 main::RUNTIME ]
fid_fileinfo 1 eval 6 [ count 1 nested 0 merged 0 ]
fid_fileinfo 1 eval 9 [ count 1 nested 0 merged 1 ]
fid_fileinfo 1 eval 12 [ count 1 nested 1 merged 0 ]
fid_fileinfo 2 [ (eval 1)[test22-strevala.p:6] 1 6 2 2 0 0 ]
-fid_fileinfo 2 sub main::__ANON__[(eval 1)[test22-strevala.p:6]:1]
1-1
-fid_fileinfo 2 call 1 main::CORE:print [ 1 0 0 0 0 0 0
main::__ANON__[(eval 1)[test22-strevala.p:6]:1] ]
+fid_fileinfo 2 sub main::__ANON__[(eval 1)[test22-strevala.p:6]:2]
1-2
+fid_fileinfo 2 call 1 main::CORE:print [ 1 0 0 0 0 0 0
main::__ANON__[(eval 1)[test22-strevala.p:6]:2] ]
fid_fileinfo 3 [ (eval 2)[test22-strevala.p:9] 1 9 3 2 0 0 ]
-fid_fileinfo 3 sub main::__ANON__[(eval 2)[test22-strevala.p:9]:1]
1-1
-fid_fileinfo 3 call 1 main::CORE:print [ 2 0 0 0 0 0 0
main::__ANON__[(eval 2)[test22-strevala.p:9]:1]|main::__ANON__[(eval
3)[test22-strevala.p:9]:1] ]
+fid_fileinfo 3 sub main::__ANON__[(eval 2)[test22-strevala.p:9]:2]
1-2
+fid_fileinfo 3 call 1 main::CORE:print [ 2 0 0 0 0 0 0
main::__ANON__[(eval 2)[test22-strevala.p:9]:2]|main::__ANON__[(eval
3)[test22-strevala.p:9]:2] ]
fid_fileinfo 5 [ (eval 4)[test22-strevala.p:12] 1 12 5 2 0 0 ]
-fid_fileinfo 5 call 2 main::__ANON__[(eval 5)[(eval
4)[test22-strevala.p:12]:2]:1] [ 2 0 0 0 0 0 0 main::RUNTIME ]
+fid_fileinfo 5 call 2 main::__ANON__[(eval 5)[(eval
4)[test22-strevala.p:12]:2]:2] [ 2 0 0 0 0 0 0 main::RUNTIME ]
fid_fileinfo 5 eval 2 [ count 1 nested 0 merged 1 ]
fid_fileinfo 6 [ (eval 5)[(eval 4)[test22-strevala.p:12]:2] 5 2 6 2 0
0 ]
-fid_fileinfo 6 sub main::__ANON__[(eval 5)[(eval
4)[test22-strevala.p:12]:2]:1] 1-1
-fid_fileinfo 6 call 1 main::CORE:print [ 2 0 0 0 0 0 0
main::__ANON__[(eval 6)[(eval 4)[test22-strevala.p:12]:2]:1]|
main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:1] ]
+fid_fileinfo 6 sub main::__ANON__[(eval 5)[(eval
4)[test22-strevala.p:12]:2]:2] 1-2
+fid_fileinfo 6 call 1 main::CORE:print [ 2 0 0 0 0 0 0
main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:2]|
main::__ANON__[(eval 6)[(eval 4)[test22-strevala.p:12]:2]:2] ]
fid_line_time 1 3 [ 0 1 ]
fid_line_time 1 6 [ 0 1 ]
fid_line_time 1 9 [ 0 2 ]
@@ -73,15 +73,15 @@
profile_modes fid_sub_time sub
sub_subinfo main::BEGIN [ 1:0-0 calls 0 times 0 0 0 0 ]
sub_subinfo main::CORE:print [ 1:0-0 calls 5 times 0 0 0 0 ]
-sub_subinfo main::CORE:print called_by 2:1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 1)[test22-strevala.p:6]:1] ]
-sub_subinfo main::CORE:print called_by 3:1 [ 2 0 0 0 0 0 0
main::__ANON__[(eval 2)[test22-strevala.p:9]:1]|main::__ANON__[(eval
3)[test22-strevala.p:9]:1] ]
-sub_subinfo main::CORE:print called_by 6:1 [ 2 0 0 0 0 0 0
main::__ANON__[(eval 6)[(eval 4)[test22-strevala.p:12]:2]:1]|
main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:1] ]
+sub_subinfo main::CORE:print called_by 2:1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 1)[test22-strevala.p:6]:2] ]
+sub_subinfo main::CORE:print called_by 3:1 [ 2 0 0 0 0 0 0
main::__ANON__[(eval 2)[test22-strevala.p:9]:2]|main::__ANON__[(eval
3)[test22-strevala.p:9]:2] ]
+sub_subinfo main::CORE:print called_by 6:1 [ 2 0 0 0 0 0 0
main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:2]|
main::__ANON__[(eval 6)[(eval 4)[test22-strevala.p:12]:2]:2] ]
sub_subinfo main::RUNTIME [ 1:1-1 calls 0 times 0 0 0 0 ]
-sub_subinfo main::__ANON__[(eval 1)[test22-strevala.p:6]:1] [ 2:1-1 calls
1 times 0 0 0 0 ]
-sub_subinfo main::__ANON__[(eval 1)[test22-strevala.p:6]:1] called_by 1:6
[ 1 0 0 0 0 0 0 main::RUNTIME ]
-sub_subinfo main::__ANON__[(eval 2)[test22-strevala.p:9]:1] [ 3:1-1 calls
2 times 0 0 0 0 ]
-sub_subinfo main::__ANON__[(eval 2)[test22-strevala.p:9]:1] called_by 1:9
[ 2 0 0 0 0 0 0 main::RUNTIME ]
-sub_subinfo main::__ANON__[(eval 2)[test22-strevala.p:9]:1] merge_donor
main::__ANON__[(eval 3)[test22-strevala.p:9]:1]
-sub_subinfo main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:1] [
6:1-1 calls 2 times 0 0 0 0 ]
-sub_subinfo main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:1]
called_by 5:2 [ 2 0 0 0 0 0 0 main::RUNTIME ]
-sub_subinfo main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:1]
merge_donor main::__ANON__[(eval 6)[(eval 4)[test22-strevala.p:12]:2]:1]
+sub_subinfo main::__ANON__[(eval 1)[test22-strevala.p:6]:2] [ 2:1-2 calls
1 times 0 0 0 0 ]
+sub_subinfo main::__ANON__[(eval 1)[test22-strevala.p:6]:2] called_by 1:6
[ 1 0 0 0 0 0 0 main::RUNTIME ]
+sub_subinfo main::__ANON__[(eval 2)[test22-strevala.p:9]:2] [ 3:1-2 calls
2 times 0 0 0 0 ]
+sub_subinfo main::__ANON__[(eval 2)[test22-strevala.p:9]:2] called_by 1:9
[ 2 0 0 0 0 0 0 main::RUNTIME ]
+sub_subinfo main::__ANON__[(eval 2)[test22-strevala.p:9]:2] merge_donor
main::__ANON__[(eval 3)[test22-strevala.p:9]:2]
+sub_subinfo main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:2] [
6:1-2 calls 2 times 0 0 0 0 ]
+sub_subinfo main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:2]
called_by 5:2 [ 2 0 0 0 0 0 0 main::RUNTIME ]
+sub_subinfo main::__ANON__[(eval 5)[(eval 4)[test22-strevala.p:12]:2]:2]
merge_donor main::__ANON__[(eval 6)[(eval 4)[test22-strevala.p:12]:2]:2]
=======================================
--- /trunk/t/test61-submerge.p Mon Sep 13 14:00:20 2010
+++ /trunk/t/test61-submerge.p Wed Dec 26 07:56:17 2012
@@ -3,6 +3,6 @@
sub foo { print "foo @_\n" }
-my $code = 'sub { foo() }';
+my $code = qq{ sub { foo() } $Devel::NYTProf::StrEvalTestPad};
eval($code)->(); eval($code)->(); eval($code)->();
=======================================
--- /trunk/t/test61-submerge.rdt Fri Nov 19 08:25:55 2010
+++ /trunk/t/test61-submerge.rdt Wed Dec 26 07:56:17 2012
@@ -17,8 +17,7 @@
fid_block_time 1 4 [ 0 3 ]
fid_block_time 1 6 [ 0 1 ]
fid_block_time 1 8 [ 0 3 ]
-fid_block_time 2 1 [ 0 1 ]
-fid_block_time 2 2 [ 0 1 ]
+fid_block_time 2 1 [ 0 2 ]
fid_fileinfo 1 [ test61-submerge.p 1 2 0 0 ]
fid_fileinfo 1 sub main::BEGIN 0-0
fid_fileinfo 1 sub main::CORE:print 0-0
@@ -29,17 +28,15 @@
fid_fileinfo 1 eval 8 [ count 1 nested 0 merged 2 ]
fid_fileinfo 2 [ (eval 1)[test61-submerge.p:8] 1 8 2 2 0 0 ]
fid_fileinfo 2 sub main::__ANON__[(eval 1)[test61-submerge.p:8]:1]
1-1
-fid_fileinfo 2 call 1 main::foo [ 3 0 0 0 0 0 0 main::__ANON__[(eval
2)[test61-submerge.p:8]:1]|main::__ANON__[(eval 1)[test61-submerge.p:8]:1]|
main::__ANON__[(eval 3)[test61-submerge.p:8]:1] ]
+fid_fileinfo 2 call 1 main::foo [ 3 0 0 0 0 0 0 main::__ANON__[(eval
1)[test61-submerge.p:8]:1]|main::__ANON__[(eval 2)[test61-submerge.p:8]:1]|
main::__ANON__[(eval 3)[test61-submerge.p:8]:1] ]
fid_line_time 1 4 [ 0 3 ]
fid_line_time 1 6 [ 0 1 ]
fid_line_time 1 8 [ 0 3 ]
-fid_line_time 2 1 [ 0 3 ]
-fid_line_time 2 2 [ 0 3 ]
+fid_line_time 2 1 [ 0 6 ]
fid_sub_time 1 4 [ 0 3 ]
fid_sub_time 1 6 [ 0 1 ]
fid_sub_time 1 8 [ 0 3 ]
-fid_sub_time 2 1 [ 0 1 ]
-fid_sub_time 2 2 [ 0 1 ]
+fid_sub_time 2 1 [ 0 2 ]
profile_modes fid_block_time block
profile_modes fid_line_time line
profile_modes fid_sub_time sub
@@ -52,4 +49,4 @@
sub_subinfo main::__ANON__[(eval 1)[test61-submerge.p:8]:1] merge_donor
main::__ANON__[(eval 2)[test61-submerge.p:8]:1]
sub_subinfo main::__ANON__[(eval 1)[test61-submerge.p:8]:1] merge_donor
main::__ANON__[(eval 3)[test61-submerge.p:8]:1]
sub_subinfo main::foo [ 1:4-4 calls 3 times 0 0 0 0 ]
-sub_subinfo main::foo called_by 2:1 [ 3 0 0 0 0 0 0 main::__ANON__[(eval
2)[test61-submerge.p:8]:1]|main::__ANON__[(eval 1)[test61-submerge.p:8]:1]|
main::__ANON__[(eval 3)[test61-submerge.p:8]:1] ]
+sub_subinfo main::foo called_by 2:1 [ 3 0 0 0 0 0 0 main::__ANON__[(eval
1)[test61-submerge.p:8]:1]|main::__ANON__[(eval 2)[test61-submerge.p:8]:1]|
main::__ANON__[(eval 3)[test61-submerge.p:8]:1] ]
--
You've received this message because you are subscribed to
the Devel::NYTProf Development User group.
Group hosted at: http://groups.google.com/group/develnytprof-dev
Project hosted at: http://perl-devel-nytprof.googlecode.com
CPAN distribution: http://search.cpan.org/dist/Devel-NYTProf
To post, email: [email protected]
To unsubscribe, email: [email protected]