text: #define FACTOR_FORCE_INLINE __attribute__((always_inline)) inline
  namespace factor {
  	namespace atomic {
  		__attribute__((always_inline))
  		inline static bool cas(volatile cell *ptr, cell old_val, cell new_val)
  		{
  			return __sync_bool_compare_and_swap(ptr, old_val, new_val);
  		}
  		__attribute__((always_inline))
  		inline static bool cas(volatile fixnum *ptr, fixnum old_val, fixnum new_val)
  		{
  			return __sync_bool_compare_and_swap(ptr, old_val, new_val);
  		}
  
  		__attribute__((always_inline))
  		inline static cell fetch_add(volatile cell *ptr, cell val)
  		{
  			return __sync_fetch_and_add(ptr, val);
  		}
  		__attribute__((always_inline))
  		inline static fixnum fetch_add(volatile fixnum *ptr, fixnum val)
  		{
  			return __sync_fetch_and_add(ptr, val);
  		}
  
  		__attribute__((always_inline))
  		inline static cell fetch_subtract(volatile cell *ptr, cell val)
  		{
  			return __sync_fetch_and_sub(ptr, val);
  		}
  		__attribute__((always_inline))
  		inline static fixnum fetch_subtract(volatile fixnum *ptr, fixnum val)
  		{
  			return __sync_fetch_and_sub(ptr, val);
  		}
  
  		__attribute__((always_inline))
  		inline static void fence()
  		{
  			__sync_synchronize();
  		}
  	}
  }
  
  #include "atomic.hpp"
  