forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitbfea925
committed
Further marginal hacking on generic atomic ops.
In the generic atomic ops that rely on a loop around a CAS primitive,there's no need to force the initial read of the "old" value to be atomic.In the typically-rare case that we get a torn value, that simply meansthat the first CAS attempt will fail; but it will update "old" to theatomically-read value, so the next attempt has a chance of succeeding.It was already being done that way in pg_atomic_exchange_u64_impl(),but let's duplicate the approach in the rest.(Given the current coding of the pg_atomic_read functions, this changeis a no-op anyway on popular platforms; it only makes a difference wherepg_atomic_read_u64_impl() is implemented as a CAS.)In passing, also remove unnecessary take-a-pointer-and-dereference-itcoding in the pg_atomic_read functions. That seems to have been basedon a misunderstanding of what the C standard requires. What actuallymatters is that the pointer be declared as pointing to volatile, whichit is.I don't believe this will change the assembly code at all on x86platforms (even ignoring the likelihood that these implementationsget overridden by others); but it may help on less-mainstream CPUs.Discussion:https://postgr.es/m/13707.1504718238@sss.pgh.pa.us1 parentf06588a commitbfea925
1 file changed
+14
-16
lines changedLines changed: 14 additions & 16 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
45 | 45 |
| |
46 | 46 |
| |
47 | 47 |
| |
48 |
| - | |
| 48 | + | |
49 | 49 |
| |
50 | 50 |
| |
51 | 51 |
| |
| |||
170 | 170 |
| |
171 | 171 |
| |
172 | 172 |
| |
173 |
| - | |
| 173 | + | |
174 | 174 |
| |
175 | 175 |
| |
176 | 176 |
| |
| |||
183 | 183 |
| |
184 | 184 |
| |
185 | 185 |
| |
186 |
| - | |
| 186 | + | |
187 | 187 |
| |
188 | 188 |
| |
189 | 189 |
| |
| |||
205 | 205 |
| |
206 | 206 |
| |
207 | 207 |
| |
208 |
| - | |
| 208 | + | |
209 | 209 |
| |
210 | 210 |
| |
211 | 211 |
| |
| |||
218 | 218 |
| |
219 | 219 |
| |
220 | 220 |
| |
221 |
| - | |
| 221 | + | |
222 | 222 |
| |
223 | 223 |
| |
224 | 224 |
| |
| |||
249 | 249 |
| |
250 | 250 |
| |
251 | 251 |
| |
252 |
| - | |
| 252 | + | |
253 | 253 |
| |
254 | 254 |
| |
255 | 255 |
| |
| |||
299 | 299 |
| |
300 | 300 |
| |
301 | 301 |
| |
302 |
| - | |
303 |
| - | |
304 |
| - | |
| 302 | + | |
305 | 303 |
| |
306 | 304 |
| |
307 |
| - | |
| 305 | + | |
308 | 306 |
| |
309 | 307 |
| |
310 | 308 |
| |
| |||
315 | 313 |
| |
316 | 314 |
| |
317 | 315 |
| |
318 |
| - | |
| 316 | + | |
319 | 317 |
| |
320 |
| - | |
321 |
| - | |
| 318 | + | |
| 319 | + | |
322 | 320 |
| |
323 | 321 |
| |
324 | 322 |
| |
| |||
342 | 340 |
| |
343 | 341 |
| |
344 | 342 |
| |
345 |
| - | |
| 343 | + | |
346 | 344 |
| |
347 | 345 |
| |
348 | 346 |
| |
| |||
364 | 362 |
| |
365 | 363 |
| |
366 | 364 |
| |
367 |
| - | |
| 365 | + | |
368 | 366 |
| |
369 | 367 |
| |
370 | 368 |
| |
| |||
377 | 375 |
| |
378 | 376 |
| |
379 | 377 |
| |
380 |
| - | |
| 378 | + | |
381 | 379 |
| |
382 | 380 |
| |
383 | 381 |
| |
|
0 commit comments
Comments
(0)