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

Reply via email to