Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: base/atomicops.h

Issue 636783002: Use C++11 atomics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // For atomic operations on reference counts, see atomic_refcount.h. 5 // For atomic operations on reference counts, see atomic_refcount.h.
6 // For atomic operations on sequence numbers, see atomic_sequence_num.h. 6 // For atomic operations on sequence numbers, see atomic_sequence_num.h.
7 7
8 // The routines exported by this module are subtle. If you use them, even if 8 // The routines exported by this module are subtle. If you use them, even if
9 // you get the code right, it will depend on careful reasoning about atomicity 9 // you get the code right, it will depend on careful reasoning about atomicity
10 // and memory ordering; it will be less readable, and harder to maintain. If 10 // and memory ordering; it will be less readable, and harder to maintain. If
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 void Release_Store(volatile Atomic64* ptr, Atomic64 value); 131 void Release_Store(volatile Atomic64* ptr, Atomic64 value);
132 Atomic64 NoBarrier_Load(volatile const Atomic64* ptr); 132 Atomic64 NoBarrier_Load(volatile const Atomic64* ptr);
133 Atomic64 Acquire_Load(volatile const Atomic64* ptr); 133 Atomic64 Acquire_Load(volatile const Atomic64* ptr);
134 Atomic64 Release_Load(volatile const Atomic64* ptr); 134 Atomic64 Release_Load(volatile const Atomic64* ptr);
135 #endif // ARCH_CPU_64_BITS 135 #endif // ARCH_CPU_64_BITS
136 136
137 } // namespace subtle 137 } // namespace subtle
138 } // namespace base 138 } // namespace base
139 139
140 // Include our platform specific implementation. 140 // Include our platform specific implementation.
141 #if defined(THREAD_SANITIZER) 141 #if defined(__cplusplus) && (__cplusplus >= 201103L) // C++11
142 #include "base/atomicops_internals_tsan.h" 142 #include "base/atomicops_internals_portable.h"
143 #elif defined(OS_WIN) && defined(COMPILER_MSVC) && defined(ARCH_CPU_X86_FAMILY)
144 #include "base/atomicops_internals_x86_msvc.h"
145 #elif defined(OS_MACOSX)
146 #include "base/atomicops_internals_mac.h"
147 #elif defined(OS_NACL)
148 #include "base/atomicops_internals_gcc.h"
149 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARMEL)
150 #include "base/atomicops_internals_arm_gcc.h"
151 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARM64)
152 #include "base/atomicops_internals_arm64_gcc.h"
153 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_X86_FAMILY)
154 #include "base/atomicops_internals_x86_gcc.h"
155 #elif defined(COMPILER_GCC) && \
156 (defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_MIPS64_FAMILY))
157 #include "base/atomicops_internals_mips_gcc.h"
158 #else 143 #else
159 #error "Atomic operations are not supported on your platform" 144 #error "Atomic operations are not supported on your platform"
160 #endif 145 #endif
161 146
162 // On some platforms we need additional declarations to make 147 // On some platforms we need additional declarations to make
163 // AtomicWord compatible with our other Atomic* types. 148 // AtomicWord compatible with our other Atomic* types.
164 #if defined(OS_MACOSX) || defined(OS_OPENBSD) 149 #if defined(OS_MACOSX) || defined(OS_OPENBSD)
165 #include "base/atomicops_internals_atomicword_compat.h" 150 #include "base/atomicops_internals_atomicword_compat.h"
166 #endif 151 #endif
167 152
168 #endif // BASE_ATOMICOPS_H_ 153 #endif // BASE_ATOMICOPS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698