Revision: 1019
Author: [email protected]
Date: Thu Jan 21 02:29:41 2010
Log: When iterating %DB::sub to find filenames for packages, skip over any
entry
where the "filename" is one generated by eval, or re_eval.
This is a moderate knock-on in 4 of the tests, which had been associating
main:: with an eval filename.
http://code.google.com/p/perl-devel-nytprof/source/detail?r=1019
Modified:
/trunk/NYTProf.xs
/trunk/t/test11.rdt
/trunk/t/test22-strevala.rdt
/trunk/t/test51-enable.rdt
/trunk/t/test61-submerge.rdt
=======================================
--- /trunk/NYTProf.xs Tue Jan 19 08:22:24 2010
+++ /trunk/NYTProf.xs Thu Jan 21 02:29:41 2010
@@ -2984,6 +2984,22 @@
return 1;
}
+/* Returns a pointer to the ')' after the digits in the (?:re_)?eval
prefix.
+ As the prefix length is known, this gives the length of the digits. */
+
+static char *
+eval_prefix(char *filename, const char *prefix, STRLEN prefix_len) {
+ if (memEQ(filename, prefix, prefix_len)
+ && isdigit(filename[prefix_len])) {
+ char *s = filename + prefix_len + 1;
+
+ while (isdigit(*s))
+ ++s;
+ if (s[0] == ')' && s[1] == '[')
+ return s;
+ }
+ return NULL;
+}
static void
write_sub_line_ranges(pTHX)
@@ -3032,6 +3048,13 @@
first = strrchr(filename, ':');
filename_len = (first) ? first - filename : 0;
+ /* skip filenames for generated evals /\A\((?:re_)?eval
\d+\)\[.*]\z/
+ */
+ if (filename_len > 9 && filename[filename_len - 1] == ']'
+ && (eval_prefix(filename, "(eval ", 6) ||
+ eval_prefix(filename, "(re_eval ", 9)))
+ continue;
+
/* get sv for package-of-subname to filename mapping */
pkg_filename_sv = sub_pkg_filename_sv(aTHX_ sub_name,
sub_name_len);
=======================================
--- /trunk/t/test11.rdt Thu Dec 10 03:05:52 2009
+++ /trunk/t/test11.rdt Thu Jan 21 02:29:41 2010
@@ -20,11 +20,11 @@
fid_block_time 1 6 [ 0 1 ]
fid_fileinfo 1 [ test11.p 1 2 0 0 ]
fid_fileinfo 1 sub main::BEGIN 2-4
+fid_fileinfo 1 sub main::RUNTIME 1-1
fid_fileinfo 1 call 5 main::__ANON__[(eval 0)[test11.p:3]:1] [ 1 0 0 0 0 0
0 main::RUNTIME ]
fid_fileinfo 1 call 6 main::__ANON__[(eval 0)[test11.p:3]:1] [ 1 0 0 0 0 0
0 main::RUNTIME ]
fid_fileinfo 1 eval 3 [ 1 0 ]
fid_fileinfo 2 [ (eval 0)[test11.p:3] 1 3 2 2 0 0 ]
-fid_fileinfo 2 sub main::RUNTIME 1-1
fid_fileinfo 2 sub main::__ANON__[(eval 0)[test11.p:3]:1] 1-1
fid_line_time 1 3 0 0
fid_line_time 1 3 1 0
@@ -40,7 +40,7 @@
profile_modes fid_line_time line
profile_modes fid_sub_time sub
sub_subinfo main::BEGIN [ 1 2 4 0 0 0 0 0 ]
-sub_subinfo main::RUNTIME [ 2 1 1 0 0 0 0 0 ]
+sub_subinfo main::RUNTIME [ 1 1 1 0 0 0 0 0 ]
sub_subinfo main::__ANON__[(eval 0)[test11.p:3]:1] [ 2 1 1 2 0 0 0 0 ]
sub_subinfo main::__ANON__[(eval 0)[test11.p:3]:1] called_by 1 5 [ 1 0 0 0
0 0 0 main::RUNTIME ]
sub_subinfo main::__ANON__[(eval 0)[test11.p:3]:1] called_by 1 6 [ 1 0 0 0
0 0 0 main::RUNTIME ]
=======================================
--- /trunk/t/test22-strevala.rdt Thu Dec 10 03:05:52 2009
+++ /trunk/t/test22-strevala.rdt Thu Jan 21 02:29:41 2010
@@ -28,14 +28,14 @@
fid_block_time 1 12 2 2 [ 0 4 ]
fid_fileinfo 1 [ test22-strevala.p 1 2 0 0 ]
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 0)[test22-strevala.p:6]:1] [ 1
0 0 0 0 0 0 main::RUNTIME ]
fid_fileinfo 1 call 9 main::__ANON__[(eval 0)[test22-strevala.p:9]:1] [ 2
0 0 0 0 0 0 main::RUNTIME ]
fid_fileinfo 1 eval 6 [ 1 0 ]
fid_fileinfo 1 eval 9 [ 2 0 ]
fid_fileinfo 1 eval 12 [ 1 2 ]
fid_fileinfo 2 [ (eval 0)[test22-strevala.p:6] 1 6 2 2 0 0 ]
-fid_fileinfo 2 sub main::CORE:print 0-0
-fid_fileinfo 2 sub main::RUNTIME 1-1
fid_fileinfo 2 sub main::__ANON__[(eval 0)[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 0)[test22-strevala.p:6]:1] ]
fid_fileinfo 3 [ (eval 0)[test22-strevala.p:9] 1 9 3 2 0 0 ]
@@ -83,13 +83,13 @@
profile_modes fid_line_time line
profile_modes fid_sub_time sub
sub_subinfo main::BEGIN [ 1 0 0 0 0 0 0 0 ]
-sub_subinfo main::CORE:print [ 2 0 0 5 0 0 0 0 ]
+sub_subinfo main::CORE:print [ 1 0 0 5 0 0 0 0 ]
sub_subinfo main::CORE:print called_by 2 1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 0)[test22-strevala.p:6]:1] ]
sub_subinfo main::CORE:print called_by 3 1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 0)[test22-strevala.p:9]:1] ]
sub_subinfo main::CORE:print called_by 4 1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 0)[test22-strevala.p:9]:1] ]
sub_subinfo main::CORE:print called_by 6 1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 0)[(eval 0)[test22-strevala.p:12]:2]:1] ]
sub_subinfo main::CORE:print called_by 7 1 [ 1 0 0 0 0 0 0
main::__ANON__[(eval 0)[(eval 0)[test22-strevala.p:12]:2]:1] ]
-sub_subinfo main::RUNTIME [ 2 1 1 0 0 0 0 0 ]
+sub_subinfo main::RUNTIME [ 1 1 1 0 0 0 0 0 ]
sub_subinfo main::__ANON__[(eval 0)[(eval 0)[test22-strevala.p:12]:2]:1] [
6 1 1 2 0 0 0 0 ]
sub_subinfo main::__ANON__[(eval 0)[(eval 0)[test22-strevala.p:12]:2]:1]
called_by 5 2 [ 2 0 0 0 0 0 0 main::RUNTIME ]
sub_subinfo main::__ANON__[(eval 0)[test22-strevala.p:6]:1] [ 2 1 1 1 0 0
0 0 ]
=======================================
--- /trunk/t/test51-enable.rdt Thu Dec 10 03:05:52 2009
+++ /trunk/t/test51-enable.rdt Thu Jan 21 02:29:41 2010
@@ -22,16 +22,14 @@
fid_block_time 1 9 [ 0 1 ]
fid_fileinfo 1 [ test51-enable.p 1 2 0 0 ]
fid_fileinfo 1 sub main::BEGIN 0-0
+fid_fileinfo 1 sub main::CORE:unlink 0-0
+fid_fileinfo 1 sub main::RUNTIME 1-1
fid_fileinfo 1 call 5 main::CORE:unlink [ 1 0 0 0 0 0 0
main::RUNTIME ]
fid_fileinfo 1 call 9 main::sub1 [ 1 0 0 0 0 0 0
main::RUNTIME ]
fid_fileinfo 1 call 11 DB::disable_profile [ 1 0 0 0 0 0 0
main::RUNTIME ]
-fid_fileinfo 1 eval 7 [ 2 0 ]
+fid_fileinfo 1 eval 7 [ 1 0 ]
fid_fileinfo 2 [ (eval 0)[test51-enable.p:7] 1 7 2 2 0 0 ]
fid_fileinfo 2 sub main::sub1 1-1
-fid_fileinfo 3 [ (eval 0)[test51-enable.p:7] 1 7 3 4 0 0 ]
-fid_fileinfo 3 sub main::CORE:unlink 0-0
-fid_fileinfo 3 sub main::RUNTIME 1-1
-fid_fileinfo 3 sub main::sub9 1-1
fid_line_time 1 3 [ 0 1 ]
fid_line_time 1 4 [ 0 1 ]
fid_line_time 1 5 [ 0 1 ]
@@ -52,9 +50,8 @@
sub_subinfo DB::disable_profile [ undef 0 0 1 0 0 0 0 ]
sub_subinfo DB::disable_profile called_by 1 11 [ 1 0 0 0 0 0 0
main::RUNTIME ]
sub_subinfo main::BEGIN [ 1 0 0 0 0 0 0 0 ]
-sub_subinfo main::CORE:unlink [ 3 0 0 1 0 0 0 0 ]
+sub_subinfo main::CORE:unlink [ 1 0 0 1 0 0 0 0 ]
sub_subinfo main::CORE:unlink called_by 1 5 [ 1 0 0
0 0 0 0 main::RUNTIME ]
-sub_subinfo main::RUNTIME [ 3 1 1 0 0 0 0 0 ]
+sub_subinfo main::RUNTIME [ 1 1 1 0 0 0 0 0 ]
sub_subinfo main::sub1 [ 2 1 1 1 0 0 0 0 ]
sub_subinfo main::sub1 called_by 1 9 [ 1 0 0 0 0 0 0
main::RUNTIME ]
-sub_subinfo main::sub9 [ 3 1 1 0 0 0 0 0 ]
=======================================
--- /trunk/t/test61-submerge.rdt Thu Dec 10 03:05:52 2009
+++ /trunk/t/test61-submerge.rdt Thu Jan 21 02:29:41 2010
@@ -21,6 +21,8 @@
fid_block_time 1 8 2 2 [ 0 3 ]
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
+fid_fileinfo 1 sub main::RUNTIME 1-1
fid_fileinfo 1 sub main::foo 4-4
fid_fileinfo 1 call 4 main::CORE:print [ 3 0 0 0 0 0 0
main::foo ]
fid_fileinfo 1 call 8 main::__ANON__[(eval 0)[test61-submerge.p:8]:1] [ 3
0 0 0 0 0 0 main::RUNTIME ]
@@ -32,8 +34,6 @@
fid_fileinfo 3 sub main::__ANON__[(eval 0)[test61-submerge.p:8]:1]
1-1
fid_fileinfo 3 call 1 main::foo [ 1 0 0 0 0 0 0 main::__ANON__[(eval
0)[test61-submerge.p:8]:1] ]
fid_fileinfo 4 [ (eval 0)[test61-submerge.p:8] 1 8 4 2 0 0 ]
-fid_fileinfo 4 sub main::CORE:print 0-0
-fid_fileinfo 4 sub main::RUNTIME 1-1
fid_fileinfo 4 sub main::__ANON__[(eval 0)[test61-submerge.p:8]:1]
1-1
fid_fileinfo 4 call 1 main::foo [ 1 0 0 0 0 0 0 main::__ANON__[(eval
0)[test61-submerge.p:8]:1] ]
fid_line_time 1 4 [ 0 3 ]
@@ -52,9 +52,9 @@
profile_modes fid_line_time line
profile_modes fid_sub_time sub
sub_subinfo main::BEGIN [ 1 0 0 0 0 0 0 0 ]
-sub_subinfo main::CORE:print [ 4 0 0 3 0 0 0 0 ]
+sub_subinfo main::CORE:print [ 1 0 0 3 0 0 0 0 ]
sub_subinfo main::CORE:print called_by 1 4 [ 3 0 0
0 0 0 0 main::foo ]
-sub_subinfo main::RUNTIME [ 4 1 1 0 0 0 0 0 ]
+sub_subinfo main::RUNTIME [ 1 1 1 0 0 0 0 0 ]
sub_subinfo main::__ANON__[(eval 0)[test61-submerge.p:8]:1] [ 2 1 1 3 0 0
0 0 ]
sub_subinfo main::__ANON__[(eval 0)[test61-submerge.p:8]:1] called_by 1 8
[ 3 0 0 0 0 0 0 main::RUNTIME ]
sub_subinfo main::foo [ 1 4 4 3 0 0 0 0 ]
--
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]