diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-04 02:53:20 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-04 02:53:20 +0000 |
commit | 38ca5cca0095d1a00a280009ab49772ce8749e91 (patch) | |
tree | 854b055d90f012b29e68583ad638e0b6ca34055e | |
parent | 1655b26f678e7df7cb840194489095bea24e8dee (diff) | |
download | ruby-38ca5cca0095d1a00a280009ab49772ce8749e91.tar.gz |
* gc.c (ATOMIC_SIZE_*): 64bit Windows support.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | gc.c | 18 |
2 files changed, 17 insertions, 5 deletions
@@ -1,3 +1,7 @@ +Wed Jul 4 11:52:12 2012 NAKAMURA Usaku <usa@ruby-lang.org> + + * gc.c (ATOMIC_SIZE_*): 64bit Windows support. + Wed Jul 4 11:11:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> * eval.c (rb_frame_callee, rb_f_callee_name): fix to return the called @@ -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)) |