mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
atomic: favor compiler intrinsics for compare-and-swap over macOS APIs.
The OSAtomicCompareAndSwap* APIs are deprecated as of macOS 10.12.
This commit is contained in:
parent
8c00de57f6
commit
1c9c7633d9
@ -101,10 +101,10 @@ SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval)
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_MSC_ATOMICS
|
#ifdef HAVE_MSC_ATOMICS
|
||||||
return (_InterlockedCompareExchange((long*)&a->value, (long)newval, (long)oldval) == (long)oldval);
|
return (_InterlockedCompareExchange((long*)&a->value, (long)newval, (long)oldval) == (long)oldval);
|
||||||
#elif defined(__MACOSX__) /* !!! FIXME: should we favor gcc atomics? */
|
|
||||||
return (SDL_bool) OSAtomicCompareAndSwap32Barrier(oldval, newval, &a->value);
|
|
||||||
#elif defined(HAVE_GCC_ATOMICS)
|
#elif defined(HAVE_GCC_ATOMICS)
|
||||||
return (SDL_bool) __sync_bool_compare_and_swap(&a->value, oldval, newval);
|
return (SDL_bool) __sync_bool_compare_and_swap(&a->value, oldval, newval);
|
||||||
|
#elif defined(__MACOSX__) /* this is deprecated in 10.12 sdk; favor gcc atomics. */
|
||||||
|
return (SDL_bool) OSAtomicCompareAndSwap32Barrier(oldval, newval, &a->value);
|
||||||
#elif defined(__SOLARIS__) && defined(_LP64)
|
#elif defined(__SOLARIS__) && defined(_LP64)
|
||||||
return (SDL_bool) ((int) atomic_cas_64((volatile uint64_t*)&a->value, (uint64_t)oldval, (uint64_t)newval) == oldval);
|
return (SDL_bool) ((int) atomic_cas_64((volatile uint64_t*)&a->value, (uint64_t)oldval, (uint64_t)newval) == oldval);
|
||||||
#elif defined(__SOLARIS__) && !defined(_LP64)
|
#elif defined(__SOLARIS__) && !defined(_LP64)
|
||||||
@ -132,12 +132,12 @@ SDL_AtomicCASPtr(void **a, void *oldval, void *newval)
|
|||||||
return (_InterlockedCompareExchange((long*)a, (long)newval, (long)oldval) == (long)oldval);
|
return (_InterlockedCompareExchange((long*)a, (long)newval, (long)oldval) == (long)oldval);
|
||||||
#elif defined(HAVE_MSC_ATOMICS) && (!_M_IX86)
|
#elif defined(HAVE_MSC_ATOMICS) && (!_M_IX86)
|
||||||
return (_InterlockedCompareExchangePointer(a, newval, oldval) == oldval);
|
return (_InterlockedCompareExchangePointer(a, newval, oldval) == oldval);
|
||||||
#elif defined(__MACOSX__) && defined(__LP64__) /* !!! FIXME: should we favor gcc atomics? */
|
|
||||||
return (SDL_bool) OSAtomicCompareAndSwap64Barrier((int64_t)oldval, (int64_t)newval, (int64_t*) a);
|
|
||||||
#elif defined(__MACOSX__) && !defined(__LP64__) /* !!! FIXME: should we favor gcc atomics? */
|
|
||||||
return (SDL_bool) OSAtomicCompareAndSwap32Barrier((int32_t)oldval, (int32_t)newval, (int32_t*) a);
|
|
||||||
#elif defined(HAVE_GCC_ATOMICS)
|
#elif defined(HAVE_GCC_ATOMICS)
|
||||||
return __sync_bool_compare_and_swap(a, oldval, newval);
|
return __sync_bool_compare_and_swap(a, oldval, newval);
|
||||||
|
#elif defined(__MACOSX__) && defined(__LP64__) /* this is deprecated in 10.12 sdk; favor gcc atomics. */
|
||||||
|
return (SDL_bool) OSAtomicCompareAndSwap64Barrier((int64_t)oldval, (int64_t)newval, (int64_t*) a);
|
||||||
|
#elif defined(__MACOSX__) && !defined(__LP64__) /* this is deprecated in 10.12 sdk; favor gcc atomics. */
|
||||||
|
return (SDL_bool) OSAtomicCompareAndSwap32Barrier((int32_t)oldval, (int32_t)newval, (int32_t*) a);
|
||||||
#elif defined(__SOLARIS__)
|
#elif defined(__SOLARIS__)
|
||||||
return (SDL_bool) (atomic_cas_ptr(a, oldval, newval) == oldval);
|
return (SDL_bool) (atomic_cas_ptr(a, oldval, newval) == oldval);
|
||||||
#elif EMULATE_CAS
|
#elif EMULATE_CAS
|
||||||
|
Loading…
Reference in New Issue
Block a user