Revision: 1139
Author: [email protected]
Date: Mon Mar  8 01:49:42 2010
Log: Move time block and time line processing into load_perl_callback().

All Perl callback invocation is now done from load_perl_callback().
http://code.google.com/p/perl-devel-nytprof/source/detail?r=1139

Modified:
 /trunk/NYTProf.xs

=======================================
--- /trunk/NYTProf.xs   Mon Mar  8 01:49:38 2010
+++ /trunk/NYTProf.xs   Mon Mar  8 01:49:42 2010
@@ -4048,8 +4048,8 @@
     {STR_WITH_LEN("[no tag]"), NULL},
     {STR_WITH_LEN("ATTRIBUTE"), "33"},
     {STR_WITH_LEN("COMMENT"), "3"},
-    {STR_WITH_LEN("TIME_BLOCK"), NULL},
-    {STR_WITH_LEN("TIME_LINE"), NULL},
+    {STR_WITH_LEN("TIME_BLOCK"), "00uuuuu"},
+    {STR_WITH_LEN("TIME_LINE"), "00uuu"},
     {STR_WITH_LEN("DISCOUNT"), ""},
     {STR_WITH_LEN("NEW_FID"), "uuuuuuS"},
     {STR_WITH_LEN("SRC_LINE"), "uuS"},
@@ -4091,6 +4091,14 @@

     while ((type = *arglist++)) {
         switch(type) {
+        case '0':
+        {
+            /* These really should go, but need a flag day change in
+               documented callback API.  */
+            sv_setuv(cb_args[i], 0);
+            XPUSHs(cb_args[i++]);
+            break;
+        }
         case 'u':
         {
             unsigned int u = va_arg(args, unsigned int);
@@ -4307,27 +4315,10 @@
                 }

                 if (cb) {
-                    unsigned int eval_file_num = 0;
-                    unsigned int eval_line_num = 0;
-                    PUSHMARK(SP);
-
- XPUSHs(c == NYTP_TAG_TIME_BLOCK ? cb_TIME_BLOCK_tag : cb_TIME_LINE_tag);
-
-                    i = 0;
- sv_setiv(cb_args[i], eval_file_num); XPUSHs(cb_args[i++]); - sv_setiv(cb_args[i], eval_line_num); XPUSHs(cb_args[i++]); - sv_setiv(cb_args[i], ticks); XPUSHs(cb_args[i++]); - sv_setiv(cb_args[i], file_num); XPUSHs(cb_args[i++]); - sv_setiv(cb_args[i], line_num); XPUSHs(cb_args[i++]);
-
-                    if (c == NYTP_TAG_TIME_BLOCK) {
- sv_setiv(cb_args[i], block_line_num); XPUSHs(cb_args[i++]); - sv_setiv(cb_args[i], sub_line_num); XPUSHs(cb_args[i++]);
-                    }
-
-                    PUTBACK;
-                    call_sv(cb, G_DISCARD);
-                    SPAGAIN;
+                    load_perl_callback(&state, c == NYTP_TAG_TIME_BLOCK
+                                       ? nytp_time_block : nytp_time_line,
+                                       ticks, file_num, line_num,
+                                       block_line_num, sub_line_num);
                     break;
                 }

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