Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: vmprof
Changeset: r75541:1aba5ad5fd5c
Date: 2015-01-26 19:48 +0200
http://bitbucket.org/pypy/pypy/changeset/1aba5ad5fd5c/

Log:    try to work on storing extra pieces in header

diff --git a/pypy/module/_vmprof/src/get_custom_offset.c 
b/pypy/module/_vmprof/src/get_custom_offset.c
--- a/pypy/module/_vmprof/src/get_custom_offset.c
+++ b/pypy/module/_vmprof/src/get_custom_offset.c
@@ -2,6 +2,8 @@
 long pypy_jit_start_addr();
 long pypy_jit_end_addr();
 long pypy_jit_stack_depth_at_loc(long);
+long find_codemap_at_addr(long);
+long yield_bytecode_at_addr(long, long, long*);
 
 static ptrdiff_t vmprof_unw_get_custom_offset(void* ip) {
        long ip_l = (long)ip;
@@ -11,3 +13,29 @@
        }
        return pypy_jit_stack_depth_at_loc(ip);
 }
+
+static long vmprof_write_header_for_jit_addr(void **result, long n,
+                                                                               
         intptr_t addr, int max_depth)
+{
+       long codemap_pos;
+       long current_pos = 0;
+       intptr_t id;
+
+       if (addr < pypy_jit_start_addr() || addr > pypy_jit_end_addr()) {
+               return n;
+       }
+       codemap_pos = find_codemap_at_addr(addr);
+       if (codemap_pos == -1) {
+               return n;
+       }
+       while (1) {
+               id = yield_bytecode_at_addr(codemap_pos, addr, &current_pos);
+               if (id == 0) {
+                       return n;
+               }
+               result[n++] = id;
+               if (n >= max_depth) {
+                       return n;
+               }
+       }
+}
diff --git a/pypy/module/_vmprof/src/vmprof.c b/pypy/module/_vmprof/src/vmprof.c
--- a/pypy/module/_vmprof/src/vmprof.c
+++ b/pypy/module/_vmprof/src/vmprof.c
@@ -176,6 +176,8 @@
         }
 
         result[n++] = ip;
+               n = vmprof_write_header_for_jit_addr(result, n, ip, max_depth);
+               
         if (vmprof_unw_step(&cursor) <= 0) {
             break;
         }
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to