Attempt to fix compilation error on OSX and Windows
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 16 Aug 2013 10:29:56 +0000 (10:29 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 16 Aug 2013 10:29:56 +0000 (10:29 +0000)
intern/atomic/atomic_ops.h

index efcaaebf5b4f447737a44e2f845fcccf98a0def9..0df5e0c4cb1ff8e5c89d8219bb9600924ec6253b 100644 (file)
 #ifndef ATOMIC_OPS_H__
 #define ATOMIC_OPS_H__
 
+#if defined (__APPLE__)
+#  include <libkern/OSAtomic.h>
+#elif defined(_MSC_VER)
+#  include <windows.h>
+#endif
+
 /* needed for int types */
 #include "../../source/blender/blenlib/BLI_sys_types.h"
 
@@ -44,8 +50,7 @@
 #  endif
 #endif
 
-/* TODO(sergey): check on other 64bit platforms. */
-#if defined(_M_X64) || defined(_M_AMD64) || defined(__amd64__) || defined(__x86_64__)
+#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__)
 #  define LG_SIZEOF_PTR 3
 #  define LG_SIZEOF_INT 3
 #else
@@ -80,7 +85,7 @@ atomic_sub_uint64(uint64_t *p, uint64_t x)
 {
        return (InterlockedExchangeAdd64(p, -((int64_t)x)));
 }
-#elif (defined(JEMALLOC_OSATOMIC))
+#elif (defined(__APPLE__))
 ATOMIC_INLINE uint64_t
 atomic_add_uint64(uint64_t *p, uint64_t x)
 {
@@ -178,7 +183,7 @@ atomic_sub_uint32(uint32_t *p, uint32_t x)
 {
        return (InterlockedExchangeAdd(p, -((int32_t)x)));
 }
-#elif (defined(JEMALLOC_OSATOMIC))
+#elif (defined(__APPLE__))
 ATOMIC_INLINE uint32_t
 atomic_add_uint32(uint32_t *p, uint32_t x)
 {
@@ -258,10 +263,10 @@ atomic_sub_z(size_t *p, size_t x)
 {
 #if (LG_SIZEOF_PTR == 3)
        return ((size_t)atomic_add_uint64((uint64_t *)p,
-           (uint64_t) - ((int64_t)x)));
+           (uint64_t)-((int64_t)x)));
 #elif (LG_SIZEOF_PTR == 2)
        return ((size_t)atomic_add_uint32((uint32_t *)p,
-           (uint32_t) - ((int32_t)x)));
+           (uint32_t)-((int32_t)x)));
 #endif
 }
 
@@ -282,10 +287,10 @@ atomic_sub_u(unsigned *p, unsigned x)
 {
 #if (LG_SIZEOF_INT == 3)
        return ((unsigned)atomic_add_uint64((uint64_t *)p,
-           (uint64_t) - ((int64_t)x)));
+           (uint64_t)-((int64_t)x)));
 #elif (LG_SIZEOF_INT == 2)
        return ((unsigned)atomic_add_uint32((uint32_t *)p,
-           (uint32_t) - ((int32_t)x)));
+           (uint32_t)-((int32_t)x)));
 #endif
 }