aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-17 08:14:53 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-17 08:14:53 +0000
commita5456a1d8308cec5461846418500f77b69a01e4d (patch)
tree8d5104f86a89f04895f5a55f74699c4f45fc12e5
parent6545327e24c0efc7bb0cb32cd2043d79ea365790 (diff)
downloadruby-a5456a1d8308cec5461846418500f77b69a01e4d.tar.gz
gc.c: tick for POWER arch
* gc.c (tick): Use __builtin_ppc_get_timebase for POWER arch. [Fix GH-1291] This gives a little performance improvement user system total real Before: 20.870000 0.000000 20.870000 ( 20.893959) After: 20.720000 0.000000 20.720000 ( 20.733970) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--gc.c12
2 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 51852a24d4..a60122f643 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Mar 17 17:14:51 2016 Dinar Valeev <dvaleev@suse.com>
+
+ * gc.c (tick): Use __builtin_ppc_get_timebase for POWER arch.
+ [Fix GH-1291]
+
Thu Mar 17 11:51:48 2016 NARUSE, Yui <naruse@ruby-lang.org>
* lib/securerandom.rb (gen_random): to avoid blocking on Windows.
diff --git a/gc.c b/gc.c
index 58953b94e2..d019633dc0 100644
--- a/gc.c
+++ b/gc.c
@@ -935,6 +935,18 @@ tick(void)
return ((unsigned long long)lo)|( ((unsigned long long)hi)<<32);
}
+#elif defined(__powerpc64__) && \
+ ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+typedef unsigned long long tick_t;
+#define PRItick "llu"
+
+static __inline__ tick_t
+tick(void)
+{
+ unsigned long long val = __builtin_ppc_get_timebase();
+ return val;
+}
+
#elif defined(_WIN32) && defined(_MSC_VER)
#include <intrin.h>
typedef unsigned __int64 tick_t;