Index: runtime/vm/atomic_win.h |
diff --git a/runtime/vm/atomic_win.h b/runtime/vm/atomic_win.h |
index 0c31e592aa6b4d1bee4cb70f00f0df0c2562b8fb..4ef539c3a3f3f639496b4fe2947653b505c95ca8 100644 |
--- a/runtime/vm/atomic_win.h |
+++ b/runtime/vm/atomic_win.h |
@@ -28,13 +28,13 @@ inline uintptr_t AtomicOperations::FetchAndIncrement(uintptr_t* p) { |
} |
-inline intptr_t AtomicOperations::FetchAndAdd(intptr_t* p, intptr_t delta) { |
+inline uintptr_t AtomicOperations::FetchAndDecrement(uintptr_t* p) { |
#if defined(HOST_ARCH_X64) |
- return static_cast<intptr_t>( |
- InterlockedAdd64(reinterpret_cast<LONGLONG*>(p), delta)) - delta; |
+ return static_cast<uintptr_t>( |
+ InterlockedDecrement64(reinterpret_cast<LONGLONG*>(p))) + 1; |
#elif defined(HOST_ARCH_IA32) |
- return static_cast<intptr_t>( |
- InterlockedAdd(reinterpret_cast<LONG*>(p), delta)) - delta; |
+ return static_cast<uintptr_t>( |
+ InterlockedDecrement(reinterpret_cast<LONG*>(p))) + 1; |
#else |
#error Unsupported host architecture. |
#endif |