gh-117657: Make PyType_HasFeature (exported version) atomic (GH-120484)
Make PyType_HasFeature (exported version) atomic
(cherry picked from commit
6f63dfff6f493b405f3422210a168369e1e7a35d)
Co-authored-by: Ken Jin <kenjin@python.org>
// PyTypeObject is opaque in the limited C API
flags = PyType_GetFlags(type);
#else
- flags = type->tp_flags;
+# ifdef Py_GIL_DISABLED
+ flags = _Py_atomic_load_ulong_relaxed(&type->tp_flags);
+# else
+ flags = type->tp_flags;
+# endif
#endif
return ((flags & feature) != 0);
}
unsigned long
PyType_GetFlags(PyTypeObject *type)
{
- return type->tp_flags;
+ return FT_ATOMIC_LOAD_ULONG_RELAXED(type->tp_flags);
}