| 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
|
|
|