[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