@@ -278,15 +278,15 @@ set_add_entry_takeref(PySetObject *so, PyObject *key, Py_hash_t hash)
278278 if (freeslot == NULL )
279279 goto found_unused ;
280280 FT_ATOMIC_STORE_SSIZE_RELAXED (so -> used , so -> used + 1 );
281- FT_ATOMIC_STORE_PTR_RELEASE (freeslot -> key , key );
282281 FT_ATOMIC_STORE_SSIZE_RELAXED (freeslot -> hash , hash );
282+ FT_ATOMIC_STORE_PTR_RELEASE (freeslot -> key , key );
283283 return 0 ;
284284
285285 found_unused :
286286 so -> fill ++ ;
287287 FT_ATOMIC_STORE_SSIZE_RELAXED (so -> used , so -> used + 1 );
288- FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , key );
289288 FT_ATOMIC_STORE_SSIZE_RELAXED (entry -> hash , hash );
289+ FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , key );
290290 if ((size_t )so -> fill * 5 < mask * 3 )
291291 return 0 ;
292292 return set_table_resize (so , so -> used > 50000 ? so -> used * 2 : so -> used * 4 );
@@ -352,8 +352,8 @@ set_insert_clean(setentry *table, size_t mask, PyObject *key, Py_hash_t hash)
352352 i = (i * 5 + 1 + perturb ) & mask ;
353353 }
354354 found_null :
355- FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , key );
356355 FT_ATOMIC_STORE_SSIZE_RELAXED (entry -> hash , hash );
356+ FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , key );
357357}
358358
359359/* ======== End logic for probing the hash table ========================== */
@@ -522,9 +522,9 @@ set_discard_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
522522 }
523523 assert (status == SET_LOOKKEY_FOUND );
524524 old_key = entry -> key ;
525- FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , dummy );
526525 FT_ATOMIC_STORE_SSIZE_RELAXED (entry -> hash , -1 );
527526 FT_ATOMIC_STORE_SSIZE_RELAXED (so -> used , so -> used - 1 );
527+ FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , dummy );
528528 Py_DECREF (old_key );
529529 return DISCARD_FOUND ;
530530}
@@ -790,8 +790,8 @@ set_merge_lock_held(PySetObject *so, PyObject *otherset)
790790 key = other_entry -> key ;
791791 if (key != NULL ) {
792792 assert (so_entry -> key == NULL );
793- FT_ATOMIC_STORE_PTR_RELEASE (so_entry -> key , Py_NewRef (key ));
794793 FT_ATOMIC_STORE_SSIZE_RELAXED (so_entry -> hash , other_entry -> hash );
794+ FT_ATOMIC_STORE_PTR_RELEASE (so_entry -> key , Py_NewRef (key ));
795795 }
796796 }
797797 so -> fill = other -> fill ;
@@ -855,10 +855,10 @@ set_pop_impl(PySetObject *so)
855855 if (entry > limit )
856856 entry = so -> table ;
857857 }
858- key = entry -> key ;
859- FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , dummy );
860858 FT_ATOMIC_STORE_SSIZE_RELAXED (entry -> hash , -1 );
861859 FT_ATOMIC_STORE_SSIZE_RELAXED (so -> used , so -> used - 1 );
860+ key = entry -> key ;
861+ FT_ATOMIC_STORE_PTR_RELEASE (entry -> key , dummy );
862862 so -> finger = entry - so -> table + 1 ; /* next place to start */
863863 return key ;
864864}
0 commit comments