[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