Skip to content

Commit 3dd2157

Browse files
authored
Simplify set entry insertion logic. (pythonGH-19881)
1 parent 21893fb commit 3dd2157

File tree

1 file changed

+2
-16
lines changed

1 file changed

+2
-16
lines changed

Objects/setobject.c

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ static int
137137
set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
138138
{
139139
setentry *table;
140-
setentry *freeslot;
141140
setentry *entry;
142141
size_t perturb;
143142
size_t mask;
@@ -158,7 +157,6 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
158157
if (entry->key == NULL)
159158
goto found_unused;
160159

161-
freeslot = NULL;
162160
perturb = hash;
163161

164162
while (1) {
@@ -187,14 +185,12 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
187185
goto restart;
188186
mask = so->mask; /* help avoid a register spill */
189187
}
190-
else if (entry->hash == -1)
191-
freeslot = entry;
192188

193189
if (i + LINEAR_PROBES <= mask) {
194190
for (j = 0 ; j < LINEAR_PROBES ; j++) {
195191
entry++;
196192
if (entry->hash == 0 && entry->key == NULL)
197-
goto found_unused_or_dummy;
193+
goto found_unused;
198194
if (entry->hash == hash) {
199195
PyObject *startkey = entry->key;
200196
assert(startkey != dummy);
@@ -216,8 +212,6 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
216212
goto restart;
217213
mask = so->mask;
218214
}
219-
else if (entry->hash == -1)
220-
freeslot = entry;
221215
}
222216
}
223217

@@ -226,17 +220,9 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
226220

227221
entry = &so->table[i];
228222
if (entry->key == NULL)
229-
goto found_unused_or_dummy;
223+
goto found_unused;
230224
}
231225

232-
found_unused_or_dummy:
233-
if (freeslot == NULL)
234-
goto found_unused;
235-
so->used++;
236-
freeslot->key = key;
237-
freeslot->hash = hash;
238-
return 0;
239-
240226
found_unused:
241227
so->fill++;
242228
so->used++;

0 commit comments

Comments
 (0)