Author: Richard Plangger <[email protected]>
Branch: vmprof-native
Changeset: r90707:0f877a858b49
Date: 2017-03-15 17:22 +0100
http://bitbucket.org/pypy/pypy/changeset/0f877a858b49/
Log: fix test, no debugging symbols could be found
diff --git a/rpython/rlib/rvmprof/src/rvmprof.c
b/rpython/rlib/rvmprof/src/rvmprof.c
--- a/rpython/rlib/rvmprof/src/rvmprof.c
+++ b/rpython/rlib/rvmprof/src/rvmprof.c
@@ -8,6 +8,7 @@
# include "structdef.h"
# include "src/threadlocal.h"
# include "rvmprof.h"
+# include "forwarddecl.h"
#endif
@@ -23,7 +24,6 @@
#ifdef RPYTHON_LL2CTYPES
int IS_VMPROF_EVAL(void * ptr) { return 0; }
#else
-extern void * __vmprof_eval_vmprof;
int IS_VMPROF_EVAL(void * ptr)
{
return ptr == __vmprof_eval_vmprof;
diff --git a/rpython/rlib/rvmprof/src/shared/vmp_stack.c
b/rpython/rlib/rvmprof/src/shared/vmp_stack.c
--- a/rpython/rlib/rvmprof/src/shared/vmp_stack.c
+++ b/rpython/rlib/rvmprof/src/shared/vmp_stack.c
@@ -25,6 +25,7 @@
static int (*unw_step)(unw_cursor_t*) = NULL;
static int (*unw_init_local)(unw_cursor_t *, unw_context_t *) = NULL;
static int (*unw_get_proc_info)(unw_cursor_t *, unw_proc_info_t *) = NULL;
+static int (*unw_get_proc_name)(unw_cursor_t *, char *, size_t, unw_word_t*) =
NULL;
static int (*unw_is_signal_frame)(unw_cursor_t *) = NULL;
static int (*unw_getcontext)(unw_context_t *) = NULL;
@@ -226,7 +227,7 @@
// printf("func_addr is 0, now %p\n", rip);
//}
-#ifdef RPYTHON_VMPROF
+#ifdef PYPY_JIT_CODEMAP
long start_addr = 0;
unw_word_t rip = 0;
if (unw_get_reg(&cursor, UNW_REG_IP, &rip) < 0) {
@@ -237,7 +238,7 @@
if (IS_VMPROF_EVAL((void*)pip.start_ip)) {
// yes we found one stack entry of the python frames!
return vmp_walk_and_record_python_stack_only(frame, result,
max_depth, depth, pc);
-#ifdef RPYTHON_VMPROF
+#ifdef PYPY_JIT_CODEMAP
} else if (pypy_find_codemap_at_addr(rip, &start_addr) != NULL) {
depth = vmprof_write_header_for_jit_addr(result, depth, pc,
max_depth);
return vmp_walk_and_record_python_stack_only(frame, result,
max_depth, depth, pc);
@@ -468,6 +469,8 @@
#define UL_PREFIX ""
#endif
+extern void * __vmprof_eval_vmprof_addr;
+
int vmp_native_enable(void) {
void * libhandle;
vmp_native_traces_enabled = 1;
@@ -482,6 +485,9 @@
if (!(unw_get_proc_info = dlsym(libhandle, UL_PREFIX PREFIX
"_get_proc_info"))){
goto bail_out;
}
+ if (!(unw_get_proc_name = dlsym(libhandle, UL_PREFIX PREFIX
"_get_proc_name"))){
+ goto bail_out;
+ }
if (!(unw_init_local = dlsym(libhandle, UL_PREFIX PREFIX
"_init_local"))) {
goto bail_out;
}
diff --git a/rpython/rlib/rvmprof/test/test_rvmprof.py
b/rpython/rlib/rvmprof/test/test_rvmprof.py
--- a/rpython/rlib/rvmprof/test/test_rvmprof.py
+++ b/rpython/rlib/rvmprof/test/test_rvmprof.py
@@ -151,18 +151,22 @@
os.unlink(tmpfilename)
def test_native():
- eci = ExternalCompilationInfo(compile_extra=['-g','-O1'],
+ eci = ExternalCompilationInfo(compile_extra=['-g','-O0'],
separate_module_sources=["""
- RPY_EXTERN int native_func(void) {
+ RPY_EXTERN int native_func(int d) {
int j = 0;
- for (int i = 0; i < 420000; i++) {
- j += 1;
+ if (d > 0) {
+ return native_func(d-1);
+ } else {
+ for (int i = 0; i < 42000; i++) {
+ j += d;
+ }
}
return j;
}
"""])
- native_func = rffi.llexternal("native_func", [], rffi.INT,
+ native_func = rffi.llexternal("native_func", [rffi.INT], rffi.INT,
compilation_info=eci)
class MyCode:
@@ -180,7 +184,7 @@
if num > 0:
return main(code, num-1)
else:
- return native_func()
+ return native_func(100)
tmpfilename = str(udir.join('test_rvmprof'))
@@ -195,8 +199,7 @@
period = 0.0001
rvmprof.enable(fd, period, native=1)
for i in range(num):
- res = main(code, 10)
- #assert res == 499999500000
+ res = main(code, 3)
rvmprof.disable()
os.close(fd)
return 0
@@ -217,8 +220,7 @@
walk(child, symbols)
symbols = []
walk(tree, symbols)
- not_found = ['n:pypy_g_main', 'n:native_func', 'n:pypy_g_f',
- 'n:pypy_g_main']
+ not_found = ['n:native_func']
for sym in symbols:
for i,name in enumerate(not_found):
if sym.startswith(name):
@@ -226,7 +228,7 @@
break
assert not_found == []
- fn = compile(f, [], gcpolicy="minimark")
+ fn = compile(f, [], gcpolicy="incminimark", lldebug=True)
assert fn() == 0
try:
import vmprof
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit