1 #define FACTOR_FORCE_INLINE __forceinline
5 __forceinline static bool cas(volatile cell *ptr, cell old_val, cell new_val)
7 return InterlockedCompareExchange(
8 reinterpret_cast<volatile LONG *>(ptr),
10 (LONG)new_val) == (LONG)old_val;
12 __forceinline static bool cas(volatile fixnum *ptr, fixnum old_val, fixnum new_val)
14 return InterlockedCompareExchange(
15 reinterpret_cast<volatile LONG *>(ptr),
17 (LONG)new_val) == (LONG)old_val;
20 __forceinline static cell add(volatile cell *ptr, cell val)
22 return (cell)InterlockedAdd(
23 reinterpret_cast<volatile LONG *>(ptr), (LONG)val);
25 __forceinline static fixnum add(volatile fixnum *ptr, fixnum val)
27 return (fixnum)InterlockedAdd(
28 reinterpret_cast<volatile LONG *>(ptr), (LONG)val);
31 __forceinline static cell subtract(volatile cell *ptr, cell val)
33 return (cell)InterlockedAdd(
34 reinterpret_cast<volatile LONG *>(ptr), -(LONG)val);
36 __forceinline static fixnum subtract(volatile fixnum *ptr, fixnum val)
38 return (fixnum)InterlockedAdd(
39 reinterpret_cast<volatile LONG *>(ptr), -(LONG)val);
42 __forceinline static void fence()