Skip to content

Commit 6e64ef4

Browse files
committed
Use free-threaded atomic wrapper for loading deque_iter len
1 parent b166202 commit 6e64ef4

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

Include/internal/pycore_pyatomic_ft_wrappers.h

+2
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ extern "C" {
2020
#endif
2121

2222
#ifdef Py_GIL_DISABLED
23+
#define FT_ATOMIC_LOAD_SSIZE(value) _Py_atomic_load_ssize(&value)
2324
#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) \
2425
_Py_atomic_load_ssize_relaxed(&value)
2526
#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) \
2627
_Py_atomic_store_ssize_relaxed(&value, new_value)
2728
#else
29+
#define FT_ATOMIC_LOAD_SSIZE(value) value
2830
#define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
2931
#define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
3032
#endif

Modules/_collectionsmodule.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "pycore_dict.h" // _PyDict_GetItem_KnownHash()
44
#include "pycore_long.h" // _PyLong_GetZero()
55
#include "pycore_moduleobject.h" // _PyModule_GetState()
6+
#include "pycore_pyatomic_ft_wrappers.h"
67
#include "pycore_typeobject.h" // _PyType_GetModuleState()
78

89
#include <stddef.h>
@@ -2007,7 +2008,7 @@ dequeiter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
20072008
static PyObject *
20082009
dequeiter_len(dequeiterobject *it, PyObject *Py_UNUSED(ignored))
20092010
{
2010-
Py_ssize_t len = _Py_atomic_load_ssize(&it->counter);
2011+
Py_ssize_t len = FT_ATOMIC_LOAD_SSIZE(it->counter);
20112012
return PyLong_FromSsize_t(len);
20122013
}
20132014

0 commit comments

Comments
 (0)