Author: Richard Plangger <planri...@gmail.com> Branch: vmprof-native Changeset: r90051:ba06665d9168 Date: 2017-02-11 17:37 +0100 http://bitbucket.org/pypy/pypy/changeset/ba06665d9168/
Log: rename callsite method name, handle stack walking for jit frames diff --git a/rpython/jit/metainterp/memmgr.py b/rpython/jit/metainterp/memmgr.py --- a/rpython/jit/metainterp/memmgr.py +++ b/rpython/jit/metainterp/memmgr.py @@ -71,7 +71,7 @@ for looptoken in self.alive_loops.keys(): if (0 <= looptoken.generation < max_generation or looptoken.invalidated): - rvmprof.vmp_dyn_cancel(looptoken) + rvmprof.dyn_cancel(looptoken) del self.alive_loops[looptoken] newtotal = len(self.alive_loops) debug_print("Loop tokens freed: ", oldtotal - newtotal) 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 @@ -241,10 +241,15 @@ // this is possible because compiler align to 8 bytes. // #ifdef PYPY_JIT_CODEMAP - if (top_most_frame->kind == VMPROF_JITTED_TAG) { + if (pip.format == UNW_INFO_FORMAT_DYNAMIC) { + if (top_most_frame->kind != VMPROF_JITTED_TAG) { + // if this is encountered frequently something is wrong with + // the stack building + return 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); + top_most_frame = FRAME_STEP(top_most_frame); } else if (func_addr != 0x0) { depth = _write_native_stack((void*)(func_addr | 0x1), result, depth); } _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit