ruby-changes:21415
From: nobu <ko1@a...>
Date: Fri, 14 Oct 2011 05:58:19 +0900 (JST)
Subject: [ruby-changes:21415] nobu:r33464 (trunk): * atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values.
nobu 2011-10-14 05:58:08 +0900 (Fri, 14 Oct 2011) New Revision: 33464 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33464 Log: * atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values. [ruby-dev:44596] [Bug #5439] * signal.c (ruby_atomic_exchange): no needs to define on the platforms where atomic.h is available. Modified files: trunk/ChangeLog trunk/atomic.h trunk/signal.c Index: ChangeLog =================================================================== --- ChangeLog (revision 33463) +++ ChangeLog (revision 33464) @@ -1,3 +1,11 @@ +Fri Oct 14 05:58:05 2011 Nobuyoshi Nakada <nobu@r...> + + * atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values. + [ruby-dev:44596] [Bug #5439] + + * signal.c (ruby_atomic_exchange): no needs to define on the + platforms where atomic.h is available. + Thu Oct 13 19:29:40 2011 Naohisa Goto <ngotogenome@g...> * atomic.h (ATOMIC_*): use atomic_ops(3C) when SunStudio on Solaris. Index: atomic.h =================================================================== --- atomic.h (revision 33463) +++ atomic.h (revision 33464) @@ -54,11 +54,12 @@ #else typedef int rb_atomic_t; +#define NEED_RUBY_ATOMIC_EXCHANGE extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val); # define ATOMIC_SET(var, val) (void)((var) = (val)) -# define ATOMIC_INC(var) (++(var)) -# define ATOMIC_DEC(var) (--(var)) +# define ATOMIC_INC(var) ((var)++) +# define ATOMIC_DEC(var) ((var)--) # define ATOMIC_OR(var, val) ((var) |= (val)) # define ATOMIC_EXCHANGE(var, val) ruby_atomic_exchange(&(var), (val)) #endif Index: signal.c =================================================================== --- signal.c (revision 33463) +++ signal.c (revision 33464) @@ -18,7 +18,7 @@ #include <errno.h> #include "atomic.h" -#if !defined(_WIN32) && !defined(HAVE_GCC_ATOMIC_BUILTINS) +#ifdef NEED_RUBY_ATOMIC_EXCHANGE rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/