@@ -189,7 +189,7 @@ static void create_gil(struct _gil_runtime_state *gil)
189
189
#ifdef FORCE_SWITCHING
190
190
COND_INIT (gil -> switch_cond );
191
191
#endif
192
- _Py_atomic_store_relaxed (& gil -> last_holder , 0 );
192
+ _Py_atomic_store_ptr_relaxed (& gil -> last_holder , 0 );
193
193
_Py_ANNOTATE_RWLOCK_CREATE (& gil -> locked );
194
194
_Py_atomic_store_explicit (& gil -> locked , 0 , _Py_memory_order_release );
195
195
}
@@ -233,7 +233,7 @@ drop_gil(PyInterpreterState *interp, PyThreadState *tstate)
233
233
// XXX assert(tstate == NULL || !tstate->_status.cleared);
234
234
235
235
struct _gil_runtime_state * gil = ceval -> gil ;
236
- if (!_Py_atomic_load_relaxed (& gil -> locked )) {
236
+ if (!_Py_atomic_load_ptr_relaxed (& gil -> locked )) {
237
237
Py_FatalError ("drop_gil: GIL is not locked" );
238
238
}
239
239
@@ -242,7 +242,7 @@ drop_gil(PyInterpreterState *interp, PyThreadState *tstate)
242
242
/* Sub-interpreter support: threads might have been switched
243
243
under our feet using PyThreadState_Swap(). Fix the GIL last
244
244
holder variable so that our heuristics work. */
245
- _Py_atomic_store_relaxed (& gil -> last_holder , ( uintptr_t ) tstate );
245
+ _Py_atomic_store_ptr_relaxed (& gil -> last_holder , tstate );
246
246
}
247
247
248
248
MUTEX_LOCK (gil -> mutex );
@@ -263,7 +263,7 @@ drop_gil(PyInterpreterState *interp, PyThreadState *tstate)
263
263
if (tstate != NULL && _Py_eval_breaker_bit_is_set (interp , _PY_GIL_DROP_REQUEST_BIT )) {
264
264
MUTEX_LOCK (gil -> switch_mutex );
265
265
/* Not switched yet => wait */
266
- if (((PyThreadState * )_Py_atomic_load_relaxed (& gil -> last_holder )) == tstate )
266
+ if (((PyThreadState * )_Py_atomic_load_ptr_relaxed (& gil -> last_holder )) == tstate )
267
267
{
268
268
assert (_PyThreadState_CheckConsistency (tstate ));
269
269
RESET_GIL_DROP_REQUEST (tstate -> interp );
@@ -361,8 +361,8 @@ take_gil(PyThreadState *tstate)
361
361
_Py_atomic_store_relaxed (& gil -> locked , 1 );
362
362
_Py_ANNOTATE_RWLOCK_ACQUIRED (& gil -> locked , /*is_write=*/ 1 );
363
363
364
- if (tstate != (PyThreadState * )_Py_atomic_load_relaxed (& gil -> last_holder )) {
365
- _Py_atomic_store_relaxed (& gil -> last_holder , ( uintptr_t ) tstate );
364
+ if (tstate != (PyThreadState * )_Py_atomic_load_ptr_relaxed (& gil -> last_holder )) {
365
+ _Py_atomic_store_ptr_relaxed (& gil -> last_holder , tstate );
366
366
++ gil -> switch_number ;
367
367
}
368
368
@@ -434,7 +434,7 @@ PyEval_ThreadsInitialized(void)
434
434
static inline int
435
435
current_thread_holds_gil (struct _gil_runtime_state * gil , PyThreadState * tstate )
436
436
{
437
- if (((PyThreadState * )_Py_atomic_load_relaxed (& gil -> last_holder )) != tstate ) {
437
+ if (((PyThreadState * )_Py_atomic_load_ptr_relaxed (& gil -> last_holder )) != tstate ) {
438
438
return 0 ;
439
439
}
440
440
return _Py_atomic_load_relaxed (& gil -> locked );
0 commit comments