Hoist the global "dummy" lookup outside of the reinsertion loop.
diff --git a/Objects/setobject.c b/Objects/setobject.c
index eff91c5..ac501b6 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -280,6 +280,7 @@
Py_ssize_t i;
int is_oldtable_malloced;
setentry small_copy[PySet_MINSIZE];
+ PyObject *dummy_entry;
assert(minused >= 0);
@@ -336,11 +337,12 @@
/* Copy the data over; this is refcount-neutral for active entries;
dummy entries aren't copied over, of course */
+ dummy_entry = dummy;
for (entry = oldtable; i > 0; entry++) {
if (entry->key == NULL) {
/* UNUSED */
;
- } else if (entry->key == dummy) {
+ } else if (entry->key == dummy_entry) {
/* DUMMY */
--i;
assert(entry->key == dummy);