Author: Richard Plangger <planri...@gmail.com> Branch: vmprof-native Changeset: r90026:72660eb81a7b Date: 2017-02-09 15:51 +0100 http://bitbucket.org/pypy/pypy/changeset/72660eb81a7b/
Log: move variable def out of for loop, rewrite IS_VMPROF_EVAL for pypy 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 @@ -18,22 +18,12 @@ #endif -void * g_symbol = 0; - +#ifdef RPYTHON_LL2CTYPES +#define IS_VMPROF_EVAL(ptr) 0 +#else +extern void * __vmprof_eval_vmprof; int IS_VMPROF_EVAL(void * ptr) { -#ifdef RPYTHON_LL2CTYPES - return 0; -#else - - if (g_symbol == NULL) { - g_symbol = dlsym(RTLD_GLOBAL, "__vmprof_eval_vmprof"); - if (g_symbol == NULL) { - fprintf(stderr, "symbol __vmprof_eval_vmprof could not be found\n"); - exit(-1); - } - } - - return ptr == g_symbol; + return ptr == __vmprof_eval_vmprof; +} #endif -} diff --git a/rpython/rlib/rvmprof/src/shared/symboltable.c b/rpython/rlib/rvmprof/src/shared/symboltable.c --- a/rpython/rlib/rvmprof/src/shared/symboltable.c +++ b/rpython/rlib/rvmprof/src/shared/symboltable.c @@ -390,10 +390,11 @@ } case MARKER_STACKTRACE: { long trace_count = _read_word(fileno); long depth = _read_word(fileno); + long i; LOG("stack 0x%llx %d %d\n", cur_pos, trace_count, depth); - for (long i = depth/2-1; i >= 0; i--) { + for (i = depth/2-1; i >= 0; i--) { long kind = (long)_read_addr(fileno); void * addr = _read_addr(fileno); if (kind == VMPROF_NATIVE_TAG) { 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 @@ -105,6 +105,12 @@ result[n++] = (void*)frame->value; *depth = n; } +#ifdef PYPY_JIT_CODEMAP + else if (frame->kind == VMPROF_JITTED_TAG) { + intptr_t pc = ((intptr_t*)(frame->value - sizeof(intptr_t)))[0]; + *depth = vmprof_write_header_for_jit_addr(result, *depth, pc, max_depth); + } +#endif #endif @@ -236,7 +242,7 @@ // #ifdef PYPY_JIT_CODEMAP if (func_addr == 0 && top_most_frame->kind == VMPROF_JITTED_TAG) { - intptr_t pc = ((intptr_t*)(frame->value - sizeof(intptr_t)))[0]; + intptr_t pc = ((intptr_t*)(top_most_frame->value - sizeof(intptr_t)))[0]; depth = vmprof_write_header_for_jit_addr(result, depth, pc, max_depth); frame = FRAME_STEP(frame); } else if (func_addr != 0x0) { 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 @@ -213,7 +213,6 @@ symbols.append(tree.name) if len(tree.children) == 0: return - assert len(tree.children) == 1 for child in tree.children.values(): walk(child, symbols) symbols = [] _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit