Author: Richard Plangger <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit