| Index: runtime/vm/atomic_fuchsia.h
|
| diff --git a/runtime/vm/atomic_fuchsia.h b/runtime/vm/atomic_fuchsia.h
|
| index d6c0f57b9d698d6cdb0a9a4a9d36074f558f55b2..67dd329b66bd169e991fcfafb0a909b61b5ed44b 100644
|
| --- a/runtime/vm/atomic_fuchsia.h
|
| +++ b/runtime/vm/atomic_fuchsia.h
|
| @@ -13,34 +13,30 @@
|
| #error This file should only be included on Fuchsia builds.
|
| #endif
|
|
|
| -#include "platform/assert.h"
|
| -
|
| namespace dart {
|
|
|
| inline uintptr_t AtomicOperations::FetchAndIncrement(uintptr_t* p) {
|
| - UNIMPLEMENTED();
|
| - return 0;
|
| + return __sync_fetch_and_add(p, 1);
|
| }
|
|
|
|
|
| inline void AtomicOperations::IncrementBy(intptr_t* p, intptr_t value) {
|
| - UNIMPLEMENTED();
|
| + __sync_fetch_and_add(p, value);
|
| }
|
|
|
|
|
| inline void AtomicOperations::IncrementInt64By(int64_t* p, int64_t value) {
|
| - UNIMPLEMENTED();
|
| + __sync_fetch_and_add(p, value);
|
| }
|
|
|
|
|
| inline uintptr_t AtomicOperations::FetchAndDecrement(uintptr_t* p) {
|
| - UNIMPLEMENTED();
|
| - return 0;
|
| + return __sync_fetch_and_sub(p, 1);
|
| }
|
|
|
|
|
| inline void AtomicOperations::DecrementBy(intptr_t* p, intptr_t value) {
|
| - UNIMPLEMENTED();
|
| + __sync_fetch_and_sub(p, value);
|
| }
|
|
|
|
|
| @@ -48,16 +44,14 @@ inline void AtomicOperations::DecrementBy(intptr_t* p, intptr_t value) {
|
| inline uword AtomicOperations::CompareAndSwapWord(uword* ptr,
|
| uword old_value,
|
| uword new_value) {
|
| - UNIMPLEMENTED();
|
| - return 0;
|
| + return __sync_val_compare_and_swap(ptr, old_value, new_value);
|
| }
|
|
|
|
|
| inline uint32_t AtomicOperations::CompareAndSwapUint32(uint32_t* ptr,
|
| uint32_t old_value,
|
| uint32_t new_value) {
|
| - UNIMPLEMENTED();
|
| - return 0;
|
| + return __sync_val_compare_and_swap(ptr, old_value, new_value);
|
| }
|
| #endif // !defined(USING_SIMULATOR_ATOMICS)
|
|
|
|
|