Author: Richard Plangger <planri...@gmail.com> Branch: vmprof-native Changeset: r90023:20988301e8f2 Date: 2017-02-09 14:53 +0100 http://bitbucket.org/pypy/pypy/changeset/20988301e8f2/
Log: fix translation issues for rvmprof test 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 @@ -10,9 +10,30 @@ # include "rvmprof.h" #endif +#include "shared/vmprof_get_custom_offset.h" #ifdef VMPROF_UNIX #include "shared/vmprof_main.h" #else #include "shared/vmprof_main_win32.h" #endif + +void * g_symbol = 0; + +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; +#endif +} diff --git a/rpython/rlib/rvmprof/src/rvmprof.h b/rpython/rlib/rvmprof/src/rvmprof.h --- a/rpython/rlib/rvmprof/src/rvmprof.h +++ b/rpython/rlib/rvmprof/src/rvmprof.h @@ -33,4 +33,7 @@ RPY_EXTERN void vmprof_stack_free(void*); RPY_EXTERN intptr_t vmprof_get_traceback(void *, void *, intptr_t*, intptr_t); +long vmprof_write_header_for_jit_addr(intptr_t *result, long n, + intptr_t addr, int max_depth); + #define RVMPROF_TRACEBACK_ESTIMATE_N(num_entries) (2 * (num_entries) + 4) 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 @@ -138,7 +138,7 @@ #endif int vmp_walk_and_record_stack(PY_STACK_FRAME_T *frame, void ** result, - int max_depth, intptr_t pc) { + int max_depth, int signal, intptr_t pc) { // called in signal handler #ifdef VMP_SUPPORTS_NATIVE_PROFILING @@ -158,7 +158,7 @@ return 0; } - while (1) { + while (signal) { if (unw_is_signal_frame(&cursor)) { break; } diff --git a/rpython/rlib/rvmprof/src/shared/vmp_stack.h b/rpython/rlib/rvmprof/src/shared/vmp_stack.h --- a/rpython/rlib/rvmprof/src/shared/vmp_stack.h +++ b/rpython/rlib/rvmprof/src/shared/vmp_stack.h @@ -3,7 +3,7 @@ #include "vmprof.h" int vmp_walk_and_record_stack(PY_STACK_FRAME_T * frame, void **data, - int max_depth, intptr_t pc); + int max_depth, int signal, intptr_t pc); int vmp_native_enabled(void); int vmp_native_enable(void); diff --git a/rpython/rlib/rvmprof/src/shared/vmprof.h b/rpython/rlib/rvmprof/src/shared/vmprof.h --- a/rpython/rlib/rvmprof/src/shared/vmprof.h +++ b/rpython/rlib/rvmprof/src/shared/vmprof.h @@ -44,19 +44,7 @@ #define PY_THREAD_STATE_T void #define FRAME_STEP(f) f->next #define FRAME_CODE(f) f-> - -#ifdef RPYTHON_LL2CTYPES -# define IS_VMPROF_EVAL(PTR) 0 -#else - // Is there is a way to tell the compiler - // that this prototype can have ANY return value. Just removing - // the return type will default to int - typedef long Signed; - RPY_EXTERN Signed __vmprof_eval_vmprof(); -# define IS_VMPROF_EVAL(PTR) PTR == (void*)__vmprof_eval_vmprof -#endif - - +int IS_VMPROF_EVAL(void * ptr); #else #define RPY_EXTERN // for cpython diff --git a/rpython/rlib/rvmprof/src/shared/vmprof_get_custom_offset.h b/rpython/rlib/rvmprof/src/shared/vmprof_get_custom_offset.h --- a/rpython/rlib/rvmprof/src/shared/vmprof_get_custom_offset.h +++ b/rpython/rlib/rvmprof/src/shared/vmprof_get_custom_offset.h @@ -6,8 +6,8 @@ #define MAX_INLINE_DEPTH 384 -static long vmprof_write_header_for_jit_addr(intptr_t *result, long n, - intptr_t addr, int max_depth) +long vmprof_write_header_for_jit_addr(intptr_t *result, long n, + intptr_t addr, int max_depth) { #ifdef PYPY_JIT_CODEMAP void *codemap; diff --git a/rpython/rlib/rvmprof/src/shared/vmprof_main.h b/rpython/rlib/rvmprof/src/shared/vmprof_main.h --- a/rpython/rlib/rvmprof/src/shared/vmprof_main.h +++ b/rpython/rlib/rvmprof/src/shared/vmprof_main.h @@ -101,7 +101,7 @@ } frame = current->frame; #endif - return vmp_walk_and_record_stack(frame, result, max_depth, pc); + return vmp_walk_and_record_stack(frame, result, max_depth, 1, pc); } /* ************************************************************* _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit