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

Side by Side Diff: third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_macosx.h

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component Created 4 years 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 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2012 Google Inc. All rights reserved. 2 // Copyright 2012 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, 66 inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
67 Atomic32 increment) { 67 Atomic32 increment) {
68 return OSAtomicAdd32(increment, const_cast<Atomic32*>(ptr)); 68 return OSAtomicAdd32(increment, const_cast<Atomic32*>(ptr));
69 } 69 }
70 70
71 inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, 71 inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
72 Atomic32 increment) { 72 Atomic32 increment) {
73 return OSAtomicAdd32Barrier(increment, const_cast<Atomic32*>(ptr)); 73 return OSAtomicAdd32Barrier(increment, const_cast<Atomic32*>(ptr));
74 } 74 }
75 75
76 inline void MemoryBarrier() { 76 inline void MemoryBarrierInternal() {
77 OSMemoryBarrier(); 77 OSMemoryBarrier();
78 } 78 }
79 79
80 inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, 80 inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
81 Atomic32 old_value, 81 Atomic32 old_value,
82 Atomic32 new_value) { 82 Atomic32 new_value) {
83 Atomic32 prev_value; 83 Atomic32 prev_value;
84 do { 84 do {
85 if (OSAtomicCompareAndSwap32Barrier(old_value, new_value, 85 if (OSAtomicCompareAndSwap32Barrier(old_value, new_value,
86 const_cast<Atomic32*>(ptr))) { 86 const_cast<Atomic32*>(ptr))) {
87 return old_value; 87 return old_value;
88 } 88 }
89 prev_value = *ptr; 89 prev_value = *ptr;
90 } while (prev_value == old_value); 90 } while (prev_value == old_value);
91 return prev_value; 91 return prev_value;
92 } 92 }
93 93
94 inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, 94 inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
95 Atomic32 old_value, 95 Atomic32 old_value,
96 Atomic32 new_value) { 96 Atomic32 new_value) {
97 return Acquire_CompareAndSwap(ptr, old_value, new_value); 97 return Acquire_CompareAndSwap(ptr, old_value, new_value);
98 } 98 }
99 99
100 inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { 100 inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
101 *ptr = value; 101 *ptr = value;
102 } 102 }
103 103
104 inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { 104 inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
105 *ptr = value; 105 *ptr = value;
106 MemoryBarrier(); 106 MemoryBarrierInternal();
107 } 107 }
108 108
109 inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { 109 inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
110 MemoryBarrier(); 110 MemoryBarrierInternal();
111 *ptr = value; 111 *ptr = value;
112 } 112 }
113 113
114 inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { 114 inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
115 return *ptr; 115 return *ptr;
116 } 116 }
117 117
118 inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { 118 inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
119 Atomic32 value = *ptr; 119 Atomic32 value = *ptr;
120 MemoryBarrier(); 120 MemoryBarrierInternal();
121 return value; 121 return value;
122 } 122 }
123 123
124 inline Atomic32 Release_Load(volatile const Atomic32* ptr) { 124 inline Atomic32 Release_Load(volatile const Atomic32* ptr) {
125 MemoryBarrier(); 125 MemoryBarrierInternal();
126 return *ptr; 126 return *ptr;
127 } 127 }
128 128
129 #ifdef __LP64__ 129 #ifdef __LP64__
130 130
131 // 64-bit implementation on 64-bit platform 131 // 64-bit implementation on 64-bit platform
132 132
133 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, 133 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
134 Atomic64 old_value, 134 Atomic64 old_value,
135 Atomic64 new_value) { 135 Atomic64 new_value) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 // Acquire and Release memory barriers; they are equivalent. 186 // Acquire and Release memory barriers; they are equivalent.
187 return Acquire_CompareAndSwap(ptr, old_value, new_value); 187 return Acquire_CompareAndSwap(ptr, old_value, new_value);
188 } 188 }
189 189
190 inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { 190 inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) {
191 *ptr = value; 191 *ptr = value;
192 } 192 }
193 193
194 inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { 194 inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) {
195 *ptr = value; 195 *ptr = value;
196 MemoryBarrier(); 196 MemoryBarrierInternal();
197 } 197 }
198 198
199 inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { 199 inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) {
200 MemoryBarrier(); 200 MemoryBarrierInternal();
201 *ptr = value; 201 *ptr = value;
202 } 202 }
203 203
204 inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { 204 inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) {
205 return *ptr; 205 return *ptr;
206 } 206 }
207 207
208 inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { 208 inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) {
209 Atomic64 value = *ptr; 209 Atomic64 value = *ptr;
210 MemoryBarrier(); 210 MemoryBarrierInternal();
211 return value; 211 return value;
212 } 212 }
213 213
214 inline Atomic64 Release_Load(volatile const Atomic64* ptr) { 214 inline Atomic64 Release_Load(volatile const Atomic64* ptr) {
215 MemoryBarrier(); 215 MemoryBarrierInternal();
216 return *ptr; 216 return *ptr;
217 } 217 }
218 218
219 #endif // defined(__LP64__) 219 #endif // defined(__LP64__)
220 220
221 } // namespace internal 221 } // namespace internal
222 } // namespace protobuf 222 } // namespace protobuf
223 } // namespace google 223 } // namespace google
224 224
225 #endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ 225 #endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698