3 __attribute__((always_inline))
4 inline static bool cas(volatile cell *ptr, cell old_val, cell new_val)
6 return __sync_bool_compare_and_swap(ptr, old_val, new_val);
8 __attribute__((always_inline))
9 inline static bool cas(volatile fixnum *ptr, fixnum old_val, fixnum new_val)
11 return __sync_bool_compare_and_swap(ptr, old_val, new_val);
14 __attribute__((always_inline))
15 inline static cell add(volatile cell *ptr, cell val)
17 return __sync_add_and_fetch(ptr, val);
19 __attribute__((always_inline))
20 inline static fixnum add(volatile fixnum *ptr, fixnum val)
22 return __sync_add_and_fetch(ptr, val);
25 __attribute__((always_inline))
26 inline static cell subtract(volatile cell *ptr, cell val)
28 return __sync_sub_and_fetch(ptr, val);
30 __attribute__((always_inline))
31 inline static fixnum subtract(volatile fixnum *ptr, fixnum val)
33 return __sync_sub_and_fetch(ptr, val);
36 __attribute__((always_inline))
37 inline static void fence()