mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Revert gh-127266: avoid data races when updating type slots (gh-131174) (gh-133129)
This is triggering deadlocks in test_opcache. See GH-133130 for stack trace.
This commit is contained in:
parent
219b1f9d1d
commit
eecafc3380
10 changed files with 112 additions and 233 deletions
|
@ -620,12 +620,6 @@ given type object has a specified feature.
|
|||
#define Py_TPFLAGS_HAVE_FINALIZE (1UL << 0)
|
||||
#define Py_TPFLAGS_HAVE_VERSION_TAG (1UL << 18)
|
||||
|
||||
// Flag values for ob_flags (16 bits available, if SIZEOF_VOID_P > 4).
|
||||
#define _Py_IMMORTAL_FLAGS (1 << 0)
|
||||
#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
|
||||
#if defined(Py_GIL_DISABLED) && defined(Py_DEBUG)
|
||||
#define _Py_TYPE_REVEALED_FLAG (1 << 3)
|
||||
#endif
|
||||
|
||||
#define Py_CONSTANT_NONE 0
|
||||
#define Py_CONSTANT_FALSE 1
|
||||
|
@ -782,7 +776,11 @@ PyType_HasFeature(PyTypeObject *type, unsigned long feature)
|
|||
// 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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue