activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tab...@apache.org
Subject svn commit: r1465666 - /activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/util/concurrent/unix/Atomics.cpp
Date Mon, 08 Apr 2013 15:33:10 GMT
Author: tabish
Date: Mon Apr  8 15:33:10 2013
New Revision: 1465666

URL: http://svn.apache.org/r1465666
Log:
fix for: https://issues.apache.org/jira/browse/AMQCPP-475

Modified:
    activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/util/concurrent/unix/Atomics.cpp

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/util/concurrent/unix/Atomics.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/util/concurrent/unix/Atomics.cpp?rev=1465666&r1=1465665&r2=1465666&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/util/concurrent/unix/Atomics.cpp
(original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/util/concurrent/unix/Atomics.cpp
Mon Apr  8 15:33:10 2013
@@ -56,9 +56,9 @@ void Atomics::shutdown() {
 bool Atomics::compareAndSet32(volatile int* target, int expect, int update ) {
 
 #ifdef HAVE_ATOMIC_BUILTINS
-    return __sync_val_compare_and_swap(target, expect, update)  == (unsigned int)expect;
+    return __sync_val_compare_and_swap(target, expect, update)  == expect;
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_cas_32((volatile unsigned int*)target, expect, update);
+    return atomic_cas_32((volatile unsigned int*)target, expect, update) == expect;
 #else
     bool result = false;
     PlatformThread::lockMutex(atomicMutex);
@@ -79,7 +79,7 @@ bool Atomics::compareAndSet(volatile voi
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_val_compare_and_swap(target, (void*)expect, (void*)update) == (void*)expect;
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_cas_ptr(target, expect, update);
+    return atomic_cas_ptr(target, expect, update) == expect;
 #else
     bool result = false;
     PlatformThread::lockMutex(atomicMutex);
@@ -101,7 +101,7 @@ int Atomics::getAndSet(volatile int* tar
     __sync_synchronize();
     return __sync_lock_test_and_set(target, newValue);
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_swap_32(target, newValue);
+    return atomic_swap_32((volatile unsigned int*)target, newValue);
 #else
     int oldValue;
     PlatformThread::lockMutex(atomicMutex);
@@ -142,7 +142,7 @@ int Atomics::getAndIncrement(volatile in
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_fetch_and_add(target, 1);
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_add_32_nv(mem, 1) - 1;
+    return atomic_add_32_nv((volatile unsigned int*)target, 1) - 1;
 #else
     int oldValue;
     PlatformThread::lockMutex(atomicMutex);
@@ -161,7 +161,7 @@ int Atomics::getAndDecrement(volatile in
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_fetch_and_add(target, 0xFFFFFFFF);
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_add_32_nv(target, 0xFFFFFFFF) + 1;
+    return atomic_add_32_nv((volatile unsigned int*)target, 0xFFFFFFFF) + 1;
 #else
     int oldValue;
     PlatformThread::lockMutex(atomicMutex);
@@ -180,7 +180,7 @@ int Atomics::getAndAdd(volatile int* tar
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_fetch_and_add(target, delta);
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_add_32_nv(target, delta) - delta;
+    return atomic_add_32_nv((volatile unsigned int*)target, delta) - delta;
 #else
     int oldValue;
     PlatformThread::lockMutex(atomicMutex);
@@ -199,7 +199,7 @@ int Atomics::addAndGet(volatile int* tar
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_fetch_and_add(target, delta) + delta;
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_add_32_nv(target, delta);
+    return atomic_add_32_nv((volatile unsigned int*)target, delta);
 #else
     int newValue;
     PlatformThread::lockMutex(atomicMutex);
@@ -218,7 +218,7 @@ int Atomics::incrementAndGet(volatile in
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_fetch_and_add(target, 1) + 1;
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_add_32_nv(target, 1);
+    return atomic_add_32_nv((volatile unsigned int*)target, 1);
 #else
     int newValue;
     PlatformThread::lockMutex(atomicMutex);
@@ -237,7 +237,7 @@ int Atomics::decrementAndGet(volatile in
 #ifdef HAVE_ATOMIC_BUILTINS
     return __sync_fetch_and_add(target, 0xFFFFFFFF) - 1;
 #elif defined(SOLARIS2) && SOLARIS2 >= 10
-    return atomic_add_32_nv(target, 0xFFFFFFFF);
+    return atomic_add_32_nv((volatile unsigned int*)target, 0xFFFFFFFF);
 #else
     int newValue;
     PlatformThread::lockMutex(atomicMutex);



Mime
View raw message