Revision: 1095
Author: [email protected]
Date: Fri Mar  5 02:20:14 2010
Log: Pass the input file as an argument to read_int(), read_nv() and read_str().
http://code.google.com/p/perl-devel-nytprof/source/detail?r=1095

Modified:
 /trunk/NYTProf.xs

=======================================
--- /trunk/NYTProf.xs   Mon Mar  1 12:16:59 2010
+++ /trunk/NYTProf.xs   Fri Mar  5 02:20:14 2010
@@ -354,8 +354,8 @@

 /* prototypes */
 static void output_header(pTHX);
-static unsigned int read_int(void);
-static SV *read_str(pTHX_ SV *sv);
+static unsigned int read_int(NYTP_file ifile);
+static SV *read_str(pTHX_ NYTP_file ifile, SV *sv);
 static unsigned int get_file_id(pTHX_ char*, STRLEN, int created_via);
 static void DB_stmt(pTHX_ COP *cop, OP *op);
 static void set_option(pTHX_ const char*, const char*);
@@ -494,18 +494,18 @@


 static SV *
-read_str(pTHX_ SV *sv) {
+read_str(pTHX_ NYTP_file ifile, SV *sv) {
     STRLEN len;
     char *buf;
     unsigned char tag;

-    NYTP_read(in, &tag, sizeof(tag), "string prefix");
+    NYTP_read(ifile, &tag, sizeof(tag), "string prefix");

     if (NYTP_TAG_STRING != tag && NYTP_TAG_STRING_UTF8 != tag)
croak("File format error at offset %ld%s, expected string tag but found %d ('%c')",
-              NYTP_tell(in)-1, NYTP_type_of_offset(in), tag, tag);
-
-    len = read_int();
+              NYTP_tell(ifile)-1, NYTP_type_of_offset(ifile), tag, tag);
+
+    len = read_int(ifile);
     if (sv) {
         SvGROW(sv, len+1);  /* forces SVt_PV */
     }
@@ -515,7 +515,7 @@
     SvPOK_on(sv);

     buf = SvPV_nolen(sv);
-    NYTP_read(in, buf, len, "string");
+    NYTP_read(ifile, buf, len, "string");
     SvCUR_set(sv, len);
     *SvEND(sv) = '\0';

@@ -3396,12 +3396,12 @@
  * bit integer. See output_int() for the compression details.
  */
 static unsigned int
-read_int()
+read_int(NYTP_file ifile)
 {
     unsigned char d;
     unsigned int newint;

-    NYTP_read(in, &d, sizeof(d), "integer prefix");
+    NYTP_read(ifile, &d, sizeof(d), "integer prefix");

     if (d < 0x80) {                               /* 7 bits */
         newint = d;
@@ -3427,7 +3427,7 @@
             newint = 0;
             length = 4;
         }
-        NYTP_read(in, buffer, length, "integer");
+        NYTP_read(ifile, buffer, length, "integer");
         while (length--) {
             newint <<= 8;
             newint |= *p++;
@@ -3441,13 +3441,13 @@
  * Read an NV by simple byte copy to memory
  */
 static NV
-read_nv()
+read_nv(NYTP_file ifile)
 {
     NV nv;
     /* no error checking on the assumption that a later token read will
      * detect the error/eof condition
      */
-    NYTP_read(in, (unsigned char *)&nv, sizeof(NV), "float");
+    NYTP_read(ifile, (unsigned char *)&nv, sizeof(NV), "float");
     return nv;
 }

@@ -3739,15 +3739,15 @@
                 NV seconds;
                 unsigned int eval_file_num = 0;
                 unsigned int eval_line_num = 0;
-                unsigned int ticks    = read_int();
-                unsigned int file_num = read_int();
-                unsigned int line_num = read_int();
+                unsigned int ticks    = read_int(in);
+                unsigned int file_num = read_int(in);
+                unsigned int line_num = read_int(in);
                 unsigned int block_line_num = 0;
                 unsigned int sub_line_num = 0;

                 if (c == NYTP_TAG_TIME_BLOCK) {
-                    block_line_num = read_int();
-                    sub_line_num = read_int();
+                    block_line_num = read_int(in);
+                    sub_line_num = read_int(in);
                 }

                 if (cb) {
@@ -3837,14 +3837,14 @@
                 SV *rv;
                 SV **svp;
                 SV *filename_sv;
-                unsigned int file_num      = read_int();
-                unsigned int eval_file_num = read_int();
-                unsigned int eval_line_num = read_int();
-                unsigned int fid_flags     = read_int();
-                unsigned int file_size     = read_int();
-                unsigned int file_mtime    = read_int();
-
-                filename_sv = read_str(aTHX_ NULL);
+                unsigned int file_num      = read_int(in);
+                unsigned int eval_file_num = read_int(in);
+                unsigned int eval_line_num = read_int(in);
+                unsigned int fid_flags     = read_int(in);
+                unsigned int file_size     = read_int(in);
+                unsigned int file_mtime    = read_int(in);
+
+                filename_sv = read_str(aTHX_ in, NULL);

                 if (cb) {
                     PUSHMARK(SP);
@@ -3939,9 +3939,9 @@

             case NYTP_TAG_SRC_LINE:
             {
-                unsigned int file_num = read_int();
-                unsigned int line_num = read_int();
-                SV *src = read_str(aTHX_ NULL);
+                unsigned int file_num = read_int(in);
+                unsigned int line_num = read_int(in);
+                SV *src = read_str(aTHX_ in, NULL);
                 AV *file_av;

                 if (cb) {
@@ -3981,17 +3981,17 @@
             {
                 AV *av;
                 SV *sv;
-                unsigned int fid        = read_int();
-                SV *subname_sv = read_str(aTHX_ tmp_str1_sv);
-                unsigned int first_line = read_int();
-                unsigned int last_line  = read_int();
+                unsigned int fid        = read_int(in);
+                SV *subname_sv = read_str(aTHX_ in, tmp_str1_sv);
+                unsigned int first_line = read_int(in);
+                unsigned int last_line  = read_int(in);
                 int skip_subinfo_store = 0;
                 STRLEN subname_len;
                 char *subname_pv;
-                int extra_items = read_int();
+                int extra_items = read_int(in);

                 while (extra_items-- > 0)
-                    (void)read_int();
+                    (void)read_int(in);

                 if (cb) {
                     PUSHMARK(SP);
@@ -4057,17 +4057,17 @@
                 SV *sv;
                 AV *subinfo_av;
                 int len;
-                unsigned int fid   = read_int();
-                unsigned int line  = read_int();
-                SV *caller_subname_sv = read_str(aTHX_ tmp_str2_sv);
-                unsigned int count = read_int();
-                NV incl_time       = read_nv();
-                NV excl_time       = read_nv();
-                NV spare_3         = read_nv();
-                NV spare_4         = read_nv();
-                NV reci_time       = read_nv();
-                UV rec_depth       = read_int();
-                SV *called_subname_sv = read_str(aTHX_ tmp_str1_sv);
+                unsigned int fid   = read_int(in);
+                unsigned int line  = read_int(in);
+                SV *caller_subname_sv = read_str(aTHX_ in, tmp_str2_sv);
+                unsigned int count = read_int(in);
+                NV incl_time       = read_nv(in);
+                NV excl_time       = read_nv(in);
+                NV spare_3         = read_nv(in);
+                NV spare_4         = read_nv(in);
+                NV reci_time       = read_nv(in);
+                UV rec_depth       = read_int(in);
+                SV *called_subname_sv = read_str(aTHX_ in, tmp_str1_sv);

                 PERL_UNUSED_VAR(spare_3);
                 PERL_UNUSED_VAR(spare_4);
@@ -4190,10 +4190,10 @@
             case NYTP_TAG_PID_START:
             {
                 char text[MAXPATHLEN*2];
-                unsigned int pid  = read_int();
-                unsigned int ppid = read_int();
+                unsigned int pid  = read_int(in);
+                unsigned int ppid = read_int(in);
                 int len;
-                profiler_start_time = read_nv();
+                profiler_start_time = read_nv(in);

                 if (cb) {
                     PUSHMARK(SP);
@@ -4224,9 +4224,9 @@
             case NYTP_TAG_PID_END:
             {
                 char text[MAXPATHLEN*2];
-                unsigned int pid = read_int();
+                unsigned int pid = read_int(in);
                 int len;
-                profiler_end_time = read_nv();
+                profiler_end_time = read_nv(in);

                 if (cb) {
                     PUSHMARK(SP);

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