mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
19 lines
755 B
Diff
19 lines
755 B
Diff
--- ext/concurrent-ruby-ext/atomic_reference.c
|
|||
|
|
+++ ext/concurrent-ruby-ext/atomic_reference.c 2024-09-08 23:03:29.000000000 +0800
|
||
|
|
@@ -79,9 +79,15 @@
|
||
|
|
|
||
|
|
VALUE ir_compare_and_set(volatile VALUE self, VALUE expect_value, VALUE new_value) {
|
||
|
|
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
|
||
|
|
+#if defined(__i386__) || defined(__ppc__)
|
||
|
|
+ if (OSAtomicCompareAndSwap32(expect_value, new_value, &DATA_PTR(self))) {
|
||
|
|
+ return Qtrue;
|
||
|
|
+ }
|
||
|
|
+#else
|
||
|
|
if (OSAtomicCompareAndSwap64(expect_value, new_value, &DATA_PTR(self))) {
|
||
|
|
return Qtrue;
|
||
|
|
}
|
||
|
|
+#endif
|
||
|
|
#elif defined(__sun)
|
||
|
|
/* Assuming VALUE is uintptr_t */
|
||
|
|
/* Based on the definition of uintptr_t from /usr/include/sys/int_types.h */
|