diff --git a/Objects/setobject.c b/Objects/setobject.c --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -129,7 +129,6 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash) { setentry *table; - setentry *freeslot; setentry *entry; size_t perturb; size_t mask; @@ -150,7 +149,6 @@ if (entry->key == NULL) goto found_unused; - freeslot = NULL; perturb = hash; while (1) { @@ -179,14 +177,12 @@ goto restart; mask = so->mask; /* help avoid a register spill */ } - else if (entry->hash == -1 && freeslot == NULL) - freeslot = entry; if (i + LINEAR_PROBES <= mask) { for (j = 0 ; j < LINEAR_PROBES ; j++) { entry++; if (entry->hash == 0 && entry->key == NULL) - goto found_unused_or_dummy; + goto found_unused; if (entry->hash == hash) { PyObject *startkey = entry->key; assert(startkey != dummy); @@ -208,8 +204,6 @@ goto restart; mask = so->mask; } - else if (entry->hash == -1 && freeslot == NULL) - freeslot = entry; } } @@ -218,17 +212,9 @@ entry = &so->table[i]; if (entry->key == NULL) - goto found_unused_or_dummy; + goto found_unused; } - found_unused_or_dummy: - if (freeslot == NULL) - goto found_unused; - so->used++; - freeslot->key = key; - freeslot->hash = hash; - return 0; - found_unused: so->fill++; so->used++;