factor/vm/atomic.hpp

24 lines
453 B
C++

namespace factor {
namespace atomic {
FACTOR_FORCE_INLINE static cell load(volatile cell* ptr) {
atomic::fence();
return *ptr;
}
FACTOR_FORCE_INLINE static fixnum load(volatile fixnum* ptr) {
atomic::fence();
return *ptr;
}
FACTOR_FORCE_INLINE static void store(volatile cell* ptr, cell val) {
*ptr = val;
atomic::fence();
}
FACTOR_FORCE_INLINE static void store(volatile fixnum* ptr, fixnum val) {
*ptr = val;
atomic::fence();
}
}
}