Index: runtime/vm/atomic_simulator.h |
diff --git a/runtime/vm/atomic_simulator.h b/runtime/vm/atomic_simulator.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..281dc04ff34b8c900c1e687ce829914a3a3fbf7a |
--- /dev/null |
+++ b/runtime/vm/atomic_simulator.h |
@@ -0,0 +1,31 @@ |
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+#ifndef RUNTIME_VM_ATOMIC_SIMULATOR_H_ |
+#define RUNTIME_VM_ATOMIC_SIMULATOR_H_ |
+ |
+#if !defined RUNTIME_VM_ATOMIC_H_ |
+#error Do not include atomic_simulator.h directly. Use atomic.h instead. |
+#endif |
+ |
+namespace dart { |
+ |
+#if defined(USING_SIMULATOR_ATOMICS) |
+// Forward atomic operations to the simulator if the simulator is active. |
+inline uword AtomicOperations::CompareAndSwapWord(uword* ptr, |
+ uword old_value, |
+ uword new_value) { |
+ return Simulator::CompareExchange(ptr, old_value, new_value); |
+} |
+ |
+inline uint32_t AtomicOperations::CompareAndSwapUint32(uint32_t* ptr, |
+ uint32_t old_value, |
+ uint32_t new_value) { |
+ return Simulator::CompareExchangeUint32(ptr, old_value, new_value); |
+} |
+#endif // defined(USING_SIMULATOR_ATOMICS) |
+ |
+} // namespace dart |
+ |
+#endif // RUNTIME_VM_ATOMIC_SIMULATOR_H_ |