@@ -1078,7 +1078,7 @@ compare_unicode_unicode(PyDictObject *mp, PyDictKeysObject *dk,
10781078 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
10791079{
10801080 PyDictUnicodeEntry * ep = & ((PyDictUnicodeEntry * )ep0 )[ix ];
1081- PyObject * ep_key = FT_ATOMIC_LOAD_PTR_RELAXED (ep -> me_key );
1081+ PyObject * ep_key = FT_ATOMIC_LOAD_PTR_CONSUME (ep -> me_key );
10821082 assert (ep_key != NULL );
10831083 assert (PyUnicode_CheckExact (ep_key ));
10841084 if (ep_key == key ||
@@ -1371,7 +1371,7 @@ compare_unicode_generic_threadsafe(PyDictObject *mp, PyDictKeysObject *dk,
13711371 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
13721372{
13731373 PyDictUnicodeEntry * ep = & ((PyDictUnicodeEntry * )ep0 )[ix ];
1374- PyObject * startkey = _Py_atomic_load_ptr_relaxed (& ep -> me_key );
1374+ PyObject * startkey = _Py_atomic_load_ptr_consume (& ep -> me_key );
13751375 assert (startkey == NULL || PyUnicode_CheckExact (ep -> me_key ));
13761376 assert (!PyUnicode_CheckExact (key ));
13771377
@@ -1414,7 +1414,7 @@ compare_unicode_unicode_threadsafe(PyDictObject *mp, PyDictKeysObject *dk,
14141414 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
14151415{
14161416 PyDictUnicodeEntry * ep = & ((PyDictUnicodeEntry * )ep0 )[ix ];
1417- PyObject * startkey = _Py_atomic_load_ptr_relaxed (& ep -> me_key );
1417+ PyObject * startkey = _Py_atomic_load_ptr_consume (& ep -> me_key );
14181418 if (startkey == key ) {
14191419 assert (PyUnicode_CheckExact (startkey ));
14201420 return 1 ;
@@ -1450,7 +1450,7 @@ compare_generic_threadsafe(PyDictObject *mp, PyDictKeysObject *dk,
14501450 void * ep0 , Py_ssize_t ix , PyObject * key , Py_hash_t hash )
14511451{
14521452 PyDictKeyEntry * ep = & ((PyDictKeyEntry * )ep0 )[ix ];
1453- PyObject * startkey = _Py_atomic_load_ptr_relaxed (& ep -> me_key );
1453+ PyObject * startkey = _Py_atomic_load_ptr_consume (& ep -> me_key );
14541454 if (startkey == key ) {
14551455 return 1 ;
14561456 }
@@ -5526,7 +5526,7 @@ dictiter_iternext_threadsafe(PyDictObject *d, PyObject *self,
55265526 k = _Py_atomic_load_ptr_acquire (& d -> ma_keys );
55275527 assert (i >= 0 );
55285528 if (_PyDict_HasSplitTable (d )) {
5529- PyDictValues * values = _Py_atomic_load_ptr_relaxed (& d -> ma_values );
5529+ PyDictValues * values = _Py_atomic_load_ptr_consume (& d -> ma_values );
55305530 if (values == NULL ) {
55315531 goto concurrent_modification ;
55325532 }
@@ -7114,7 +7114,7 @@ _PyObject_TryGetInstanceAttribute(PyObject *obj, PyObject *name, PyObject **attr
71147114 Py_BEGIN_CRITICAL_SECTION (dict );
71157115
71167116 if (dict -> ma_values == values && FT_ATOMIC_LOAD_UINT8 (values -> valid )) {
7117- value = _Py_atomic_load_ptr_relaxed (& values -> values [ix ]);
7117+ value = _Py_atomic_load_ptr_consume (& values -> values [ix ]);
71187118 * attr = _Py_XNewRefWithLock (value );
71197119 success = true;
71207120 } else {
0 commit comments