[pypy-commit] pypy default: simplify ifdefs, add arm case

mattip pypy.commits at gmail.com
Sat Mar 12 13:42:10 EST 2016


Author: mattip <matti.picus at gmail.com>
Branch: 
Changeset: r82997:94c2361efe8b
Date: 2016-03-12 20:29 +0200
http://bitbucket.org/pypy/pypy/changeset/94c2361efe8b/

Log:	simplify ifdefs, add arm case

diff --git a/rpython/rlib/rvmprof/src/vmprof_config.h b/rpython/rlib/rvmprof/src/vmprof_config.h
--- a/rpython/rlib/rvmprof/src/vmprof_config.h
+++ b/rpython/rlib/rvmprof/src/vmprof_config.h
@@ -1,6 +1,15 @@
 #define HAVE_SYS_UCONTEXT_H
-#if defined(__FreeBSD__) || defined(__APPLE__)
+#if defined(__FreeBSD__)
 #define PC_FROM_UCONTEXT uc_mcontext.mc_rip
+#elif defined( __APPLE__)
+  #if ((ULONG_MAX) == (UINT_MAX))
+    #define PC_FROM_UCONTEXT uc_mcontext->__ss.__eip
+  #else
+    #define PC_FROM_UCONTEXT uc_mcontext->__ss.__rip
+  #endif
+#elif defined(__arm__)
+#define PC_FROM_UCONTEXT uc_mcontext.arm_ip
 #else
+/* linux, gnuc */
 #define PC_FROM_UCONTEXT uc_mcontext.gregs[REG_RIP]
 #endif
diff --git a/rpython/rlib/rvmprof/src/vmprof_getpc.h b/rpython/rlib/rvmprof/src/vmprof_getpc.h
--- a/rpython/rlib/rvmprof/src/vmprof_getpc.h
+++ b/rpython/rlib/rvmprof/src/vmprof_getpc.h
@@ -112,13 +112,8 @@
 // PC_FROM_UCONTEXT in config.h.  The only thing we need to do here,
 // then, is to do the magic call-unrolling for systems that support it.
 
-#if defined(__linux) && defined(__i386) && defined(__GNUC__)
-intptr_t GetPC(ucontext_t *signal_ucontext) {
-  return signal_ucontext->uc_mcontext.gregs[REG_EIP];
-}
-
-// Special case #2: Windows, which has to do something totally different.
-#elif defined(_WIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(__MINGW32__)
+// Special case Windows, which has to do something totally different.
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(__MINGW32__)
 // If this is ever implemented, probably the way to do it is to have
 // profiler.cc use a high-precision timer via timeSetEvent:
 //    http://msdn2.microsoft.com/en-us/library/ms712713.aspx
@@ -141,18 +136,10 @@
 // Normal cases.  If this doesn't compile, it's probably because
 // PC_FROM_UCONTEXT is the empty string.  You need to figure out
 // the right value for your system, and add it to the list in
-// configure.ac (or set it manually in your config.h).
+// vmrpof_config.h
 #else
 intptr_t GetPC(ucontext_t *signal_ucontext) {
-#ifdef __APPLE__
-#if ((ULONG_MAX) == (UINT_MAX))
-  return (signal_ucontext->uc_mcontext->__ss.__eip);
-#else
-  return (signal_ucontext->uc_mcontext->__ss.__rip);
-#endif
-#else
   return signal_ucontext->PC_FROM_UCONTEXT;   // defined in config.h
-#endif
 }
 
 #endif


More information about the pypy-commit mailing list