Revision: 1108
Author: [email protected]
Date: Mon Mar  8 01:46:51 2010
Log: Abstract writing profile times into NYTP_write_time_block() and
NYTP_write_time_line().
http://code.google.com/p/perl-devel-nytprof/source/detail?r=1108

Modified:
 /trunk/FileHandle.h
 /trunk/FileHandle.xs
 /trunk/NYTProf.xs

=======================================
--- /trunk/FileHandle.h Mon Mar  8 01:46:38 2010
+++ /trunk/FileHandle.h Mon Mar  8 01:46:51 2010
@@ -76,3 +76,9 @@
unsigned int eval_fid, unsigned int eval_line_num,
                           unsigned int flags, unsigned int size,
                           unsigned int mtime, const char *name, I32 len);
+size_t NYTP_write_time_block(NYTP_file ofile, unsigned int elapsed,
+                             unsigned int fid, unsigned int line,
+                             unsigned int last_block_line,
+                             unsigned int last_sub_line);
+size_t NYTP_write_time_line(NYTP_file ofile, unsigned int elapsed,
+                            unsigned int fid, unsigned int line);
=======================================
--- /trunk/FileHandle.xs        Mon Mar  8 01:46:44 2010
+++ /trunk/FileHandle.xs        Mon Mar  8 01:46:51 2010
@@ -787,6 +787,59 @@

     return total;
 }
+
+static size_t
+write_time_common(NYTP_file ofile, int tag, unsigned int elapsed,
+                  unsigned int fid, unsigned int line)
+{
+    size_t total;
+    size_t retval;
+
+    total = retval = output_tag_int(ofile, tag, elapsed);
+    if (retval < 1)
+        return retval;
+
+    total += retval = output_int(ofile, fid);
+    if (retval < 1)
+        return retval;
+
+    total += retval = output_int(ofile, line);
+    if (retval < 1)
+        return retval;
+
+    return total;
+}
+
+size_t
+NYTP_write_time_block(NYTP_file ofile, unsigned int elapsed, unsigned int fid,
+                      unsigned int line, unsigned int last_block_line,
+                      unsigned int last_sub_line)
+{
+    size_t total;
+    size_t retval;
+
+    total = retval = write_time_common(ofile, NYTP_TAG_TIME_BLOCK, elapsed,
+                                       fid, line);
+    if (retval < 1)
+        return retval;
+
+    total += retval = output_int(ofile, last_block_line);
+    if (retval < 1)
+        return retval;
+
+    total += retval = output_int(ofile, last_sub_line);
+    if (retval < 1)
+        return retval;
+
+    return total;
+}
+
+size_t
+NYTP_write_time_line(NYTP_file ofile, unsigned int elapsed, unsigned int fid,
+                     unsigned int line)
+{
+ return write_time_common(ofile, NYTP_TAG_TIME_LINE, elapsed, fid, line);
+}

MODULE = Devel::NYTProf::FileHandle PACKAGE = Devel::NYTProf::FileHandle PREFIX = NYTP_

=======================================
--- /trunk/NYTProf.xs   Mon Mar  8 01:46:38 2010
+++ /trunk/NYTProf.xs   Mon Mar  8 01:46:51 2010
@@ -1378,15 +1378,14 @@
     reinit_if_forked(aTHX);

     if (last_executed_fid) {
-
-        output_tag_int(out, (unsigned char)((profile_blocks)
- ? NYTP_TAG_TIME_BLOCK : NYTP_TAG_TIME_LINE), elapsed);
-        output_int(out, last_executed_fid);
-        output_int(out, last_executed_line);
-        if (profile_blocks) {
-            output_int(out, last_block_line);
-            output_int(out, last_sub_line);
-        }
+        if (profile_blocks)
+            NYTP_write_time_block(out, elapsed, last_executed_fid,
+                                  last_executed_line, last_block_line,
+                                  last_sub_line);
+        else
+            NYTP_write_time_line(out, elapsed, last_executed_fid,
+                                 last_executed_line);
+
         if (trace_level >= 4)
logwarn("Wrote %d:%-4d %2ld ticks (%u, %u)\n", last_executed_fid, last_executed_line, elapsed, last_block_line, last_sub_line);

--
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]

Reply via email to