Index: runtime/vm/atomic_win.h |
diff --git a/runtime/vm/atomic_win.h b/runtime/vm/atomic_win.h |
index 4ef539c3a3f3f639496b4fe2947653b505c95ca8..8e07cd3d20b2330f60d2cc3a8d9e009af41843b6 100644 |
--- a/runtime/vm/atomic_win.h |
+++ b/runtime/vm/atomic_win.h |
@@ -59,6 +59,18 @@ inline uword AtomicOperations::CompareAndSwapWord(uword* ptr, |
#error Unsupported host architecture. |
#endif |
} |
+inline uint32_t AtomicOperations::CompareAndSwapUint32(uint32_t* ptr, |
+ uint32_t old_value, |
+ uint32_t new_value) { |
+#if (defined(HOST_ARCH_X64) || defined(HOST_ARCH_IA32)) |
+ return static_cast<uint32_t>( |
+ InterlockedCompareExchange(reinterpret_cast<LONG*>(ptr), |
+ static_cast<LONG>(new_value), |
+ static_cast<LONG>(old_value))); |
+#else |
+#error Unsupported host architecture. |
+#endif |
+} |
#endif // !defined(USING_SIMULATOR) |
} // namespace dart |