mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-128033: change PyMutex_LockFast
to take PyMutex
as argument (#128054)
Change `PyMutex_LockFast` to take `PyMutex` as argument.
This commit is contained in:
parent
8a433b683f
commit
91c55085a9
3 changed files with 6 additions and 5 deletions
|
@ -109,7 +109,7 @@ _PyCriticalSection_IsActive(uintptr_t tag)
|
||||||
static inline void
|
static inline void
|
||||||
_PyCriticalSection_BeginMutex(PyCriticalSection *c, PyMutex *m)
|
_PyCriticalSection_BeginMutex(PyCriticalSection *c, PyMutex *m)
|
||||||
{
|
{
|
||||||
if (PyMutex_LockFast(&m->_bits)) {
|
if (PyMutex_LockFast(m)) {
|
||||||
PyThreadState *tstate = _PyThreadState_GET();
|
PyThreadState *tstate = _PyThreadState_GET();
|
||||||
c->_cs_mutex = m;
|
c->_cs_mutex = m;
|
||||||
c->_cs_prev = tstate->critical_section;
|
c->_cs_prev = tstate->critical_section;
|
||||||
|
@ -170,8 +170,8 @@ _PyCriticalSection2_BeginMutex(PyCriticalSection2 *c, PyMutex *m1, PyMutex *m2)
|
||||||
m2 = tmp;
|
m2 = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyMutex_LockFast(&m1->_bits)) {
|
if (PyMutex_LockFast(m1)) {
|
||||||
if (PyMutex_LockFast(&m2->_bits)) {
|
if (PyMutex_LockFast(m2)) {
|
||||||
PyThreadState *tstate = _PyThreadState_GET();
|
PyThreadState *tstate = _PyThreadState_GET();
|
||||||
c->_cs_base._cs_mutex = m1;
|
c->_cs_base._cs_mutex = m1;
|
||||||
c->_cs_mutex2 = m2;
|
c->_cs_mutex2 = m2;
|
||||||
|
|
|
@ -18,9 +18,10 @@ extern "C" {
|
||||||
#define _Py_ONCE_INITIALIZED 4
|
#define _Py_ONCE_INITIALIZED 4
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
PyMutex_LockFast(uint8_t *lock_bits)
|
PyMutex_LockFast(PyMutex *m)
|
||||||
{
|
{
|
||||||
uint8_t expected = _Py_UNLOCKED;
|
uint8_t expected = _Py_UNLOCKED;
|
||||||
|
uint8_t *lock_bits = &m->_bits;
|
||||||
return _Py_atomic_compare_exchange_uint8(lock_bits, &expected, _Py_LOCKED);
|
return _Py_atomic_compare_exchange_uint8(lock_bits, &expected, _Py_LOCKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -300,7 +300,7 @@ GETITEM(PyObject *v, Py_ssize_t i) {
|
||||||
// avoid any potentially escaping calls (like PyStackRef_CLOSE) while the
|
// avoid any potentially escaping calls (like PyStackRef_CLOSE) while the
|
||||||
// object is locked.
|
// object is locked.
|
||||||
#ifdef Py_GIL_DISABLED
|
#ifdef Py_GIL_DISABLED
|
||||||
# define LOCK_OBJECT(op) PyMutex_LockFast(&(_PyObject_CAST(op))->ob_mutex._bits)
|
# define LOCK_OBJECT(op) PyMutex_LockFast(&(_PyObject_CAST(op))->ob_mutex)
|
||||||
# define UNLOCK_OBJECT(op) PyMutex_Unlock(&(_PyObject_CAST(op))->ob_mutex)
|
# define UNLOCK_OBJECT(op) PyMutex_Unlock(&(_PyObject_CAST(op))->ob_mutex)
|
||||||
#else
|
#else
|
||||||
# define LOCK_OBJECT(op) (1)
|
# define LOCK_OBJECT(op) (1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue