@@ -1082,7 +1082,7 @@ compare_unicode_unicode(PyDictObject *mp, PyDictKeysObject *dk,
10821082 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
10831083{
10841084 PyDictUnicodeEntry * ep = & ((PyDictUnicodeEntry * )ep0 )[ix ];
1085- PyObject * ep_key = FT_ATOMIC_LOAD_PTR_RELAXED (ep -> me_key );
1085+ PyObject * ep_key = FT_ATOMIC_LOAD_PTR_CONSUME (ep -> me_key );
10861086 assert (ep_key != NULL );
10871087 assert (PyUnicode_CheckExact (ep_key ));
10881088 if (ep_key == key ||
@@ -1375,7 +1375,7 @@ compare_unicode_generic_threadsafe(PyDictObject *mp, PyDictKeysObject *dk,
13751375 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
13761376{
13771377 PyDictUnicodeEntry * ep = & ((PyDictUnicodeEntry * )ep0 )[ix ];
1378- PyObject * startkey = _Py_atomic_load_ptr_relaxed (& ep -> me_key );
1378+ PyObject * startkey = _Py_atomic_load_ptr_consume (& ep -> me_key );
13791379 assert (startkey == NULL || PyUnicode_CheckExact (ep -> me_key ));
13801380 assert (!PyUnicode_CheckExact (key ));
13811381
@@ -1418,7 +1418,7 @@ compare_unicode_unicode_threadsafe(PyDictObject *mp, PyDictKeysObject *dk,
14181418 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
14191419{
14201420 PyDictUnicodeEntry * ep = & ((PyDictUnicodeEntry * )ep0 )[ix ];
1421- PyObject * startkey = _Py_atomic_load_ptr_relaxed (& ep -> me_key );
1421+ PyObject * startkey = _Py_atomic_load_ptr_consume (& ep -> me_key );
14221422 if (startkey == key ) {
14231423 assert (PyUnicode_CheckExact (startkey ));
14241424 return 1 ;
@@ -1454,7 +1454,7 @@ compare_generic_threadsafe(PyDictObject *mp, PyDictKeysObject *dk,
14541454 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
14551455{
14561456 PyDictKeyEntry * ep = & ((PyDictKeyEntry * )ep0 )[ix ];
1457- PyObject * startkey = _Py_atomic_load_ptr_relaxed (& ep -> me_key );
1457+ PyObject * startkey = _Py_atomic_load_ptr_consume (& ep -> me_key );
14581458 if (startkey == key ) {
14591459 return 1 ;
14601460 }
@@ -5519,7 +5519,7 @@ dictiter_iternext_threadsafe(PyDictObject *d, PyObject *self,
55195519 k = _Py_atomic_load_ptr_acquire (& d -> ma_keys );
55205520 assert (i >= 0 );
55215521 if (_PyDict_HasSplitTable (d )) {
5522- PyDictValues * values = _Py_atomic_load_ptr_relaxed (& d -> ma_values );
5522+ PyDictValues * values = _Py_atomic_load_ptr_consume (& d -> ma_values );
55235523 if (values == NULL ) {
55245524 goto concurrent_modification ;
55255525 }
@@ -7111,7 +7111,7 @@ _PyObject_TryGetInstanceAttribute(PyObject *obj, PyObject *name, PyObject **attr
71117111 Py_BEGIN_CRITICAL_SECTION (dict );
71127112
71137113 if (dict -> ma_values == values && FT_ATOMIC_LOAD_UINT8 (values -> valid )) {
7114- value = _Py_atomic_load_ptr_relaxed (& values -> values [ix ]);
7114+ value = _Py_atomic_load_ptr_consume (& values -> values [ix ]);
71157115 * attr = _Py_XNewRefWithLock (value );
71167116 success = true;
71177117 } else {
0 commit comments