[前][次][番号順一覧][スレッド一覧]

ruby-changes:24252

From: usa <ko1@a...>
Date: Wed, 4 Jul 2012 11:56:16 +0900 (JST)
Subject: [ruby-changes:24252] usa:r36303 (trunk): * gc.c (ATOMIC_SIZE_*): 64bit Windows support.

usa	2012-07-04 11:53:20 +0900 (Wed, 04 Jul 2012)

  New Revision: 36303

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36303

  Log:
    * gc.c (ATOMIC_SIZE_*): 64bit Windows support.

  Modified files:
    trunk/ChangeLog
    trunk/gc.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 36302)
+++ ChangeLog	(revision 36303)
@@ -1,3 +1,7 @@
+Wed Jul  4 11:52:12 2012  NAKAMURA Usaku  <usa@r...>
+
+	* gc.c (ATOMIC_SIZE_*): 64bit Windows support.
+
 Wed Jul  4 11:11:28 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* eval.c (rb_frame_callee, rb_f_callee_name): fix to return the called
Index: gc.c
===================================================================
--- gc.c	(revision 36302)
+++ gc.c	(revision 36303)
@@ -61,11 +61,19 @@
 #endif
 
 #if defined _WIN32
-# define ATOMIC_SIZE_ADD(var, val) InterlockedExchangeAdd(&(var), (val))
-# define ATOMIC_SIZE_SUB(var, val) InterlockedExchangeAdd(&(var), -(val))
-# define ATOMIC_SIZE_INC(var) InterlockedIncrement(&(var))
-# define ATOMIC_SIZE_DEC(var) InterlockedDecrement(&(var))
-# define ATOMIC_SIZE_EXCHANGE(var, val) InterlockedExchange(&(var), (val))
+# ifdef _M_AMD64
+#  define ATOMIC_SIZE_ADD(var, val) InterlockedExchangeAdd64(&(var), (val))
+#  define ATOMIC_SIZE_SUB(var, val) InterlockedExchangeAdd64(&(var), -(val))
+#  define ATOMIC_SIZE_INC(var) InterlockedIncrement64(&(var))
+#  define ATOMIC_SIZE_DEC(var) InterlockedDecrement64(&(var))
+#  define ATOMIC_SIZE_EXCHANGE(var, val) InterlockedExchange64(&(var), (val))
+# else
+#  define ATOMIC_SIZE_ADD(var, val) InterlockedExchangeAdd(&(var), (val))
+#  define ATOMIC_SIZE_SUB(var, val) InterlockedExchangeAdd(&(var), -(val))
+#  define ATOMIC_SIZE_INC(var) InterlockedIncrement(&(var))
+#  define ATOMIC_SIZE_DEC(var) InterlockedDecrement(&(var))
+#  define ATOMIC_SIZE_EXCHANGE(var, val) InterlockedExchange(&(var), (val))
+# endif
 #elif defined HAVE_GCC_ATOMIC_BUILTINS
 # define ATOMIC_SIZE_ADD(var, val) __sync_fetch_and_add(&(var), (val))
 # define ATOMIC_SIZE_SUB(var, val) __sync_fetch_and_sub(&(var), (val))

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]