[pypy-commit] pypy vmprof: fix another caller of this function

fijal noreply at buildbot.pypy.org
Wed Apr 1 14:48:11 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: vmprof
Changeset: r76675:a04dc8013c67
Date: 2015-04-01 14:44 +0200
http://bitbucket.org/pypy/pypy/changeset/a04dc8013c67/

Log:	fix another caller of this function

diff --git a/rpython/jit/backend/llsupport/codemap.py b/rpython/jit/backend/llsupport/codemap.py
--- a/rpython/jit/backend/llsupport/codemap.py
+++ b/rpython/jit/backend/llsupport/codemap.py
@@ -33,7 +33,7 @@
                                      unsigned int bytecode_info_size);
 RPY_EXTERN long *pypy_jit_codemap_del(uintptr_t addr);
 RPY_EXTERN uintptr_t pypy_jit_codemap_firstkey(void);
-RPY_EXTERN void *pypy_find_codemap_at_addr(long addr);
+RPY_EXTERN void *pypy_find_codemap_at_addr(long addr, long* start_addr);
 RPY_EXTERN long pypy_yield_codemap_at_addr(void *codemap_raw, long addr,
                                            long *current_pos_addr);
 
@@ -69,7 +69,7 @@
 stack_depth_at_loc = llexternal('pypy_jit_stack_depth_at_loc',
                                 [lltype.Signed], lltype.Signed)
 find_codemap_at_addr = llexternal('pypy_find_codemap_at_addr',
-                                  [lltype.Signed], lltype.Signed)
+                                  [lltype.Signed, rffi.CArrayPtr(lltype.Signed)], lltype.Signed)
 yield_bytecode_at_addr = llexternal('pypy_yield_codemap_at_addr',
                                     [lltype.Signed, lltype.Signed,
                                      rffi.CArrayPtr(lltype.Signed)],
@@ -123,7 +123,8 @@
         self.free()
 
 def unpack_traceback(addr):
-    codemap_raw = find_codemap_at_addr(addr)
+    codemap_raw = find_codemap_at_addr(addr,
+                                lltype.nullptr(rffi.CArray(lltype.Signed)))
     if not codemap_raw:
         return [] # no codemap for that position
     storage = lltype.malloc(rffi.CArray(lltype.Signed), 1, flavor='raw')
diff --git a/rpython/jit/backend/llsupport/src/codemap.c b/rpython/jit/backend/llsupport/src/codemap.c
--- a/rpython/jit/backend/llsupport/src/codemap.c
+++ b/rpython/jit/backend/llsupport/src/codemap.c
@@ -82,16 +82,20 @@
     codemap_data_t *data;
     uintptr_t rel_addr;
 
-    *start_addr = 0;
     if (codemap == &jit_codemap_head)
+        if (start_addr)
+            *start_addr = 0;
         return NULL;
 
     rel_addr = (uintptr_t)addr - codemap->key;
     data = (codemap_data_t *)codemap->data;
     if (rel_addr >= data->machine_code_size)
+        if (start_addr)
+            *start_addr = 0;
         return NULL;
 
-    *start_addr = (long)codemap->key;
+    if (start_addr)
+        *start_addr = (long)codemap->key;
     return (void *)codemap;
 }
 


More information about the pypy-commit mailing list