Merging upstream version 0.7.2.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
44a755f8ce
commit
6df1da3298
33 changed files with 913 additions and 181 deletions
12
src/ck_rhs.c
12
src/ck_rhs.c
|
@ -914,6 +914,8 @@ ck_rhs_put_robin_hood(struct ck_rhs *hs,
|
|||
long prev;
|
||||
void *key;
|
||||
long prevs[CK_RHS_MAX_RH];
|
||||
int prev_probes[CK_RHS_MAX_RH];
|
||||
long last_slot = -1;
|
||||
unsigned int prevs_nb = 0;
|
||||
unsigned int i;
|
||||
|
||||
|
@ -938,8 +940,13 @@ restart:
|
|||
if (ck_rhs_grow(hs, map->capacity << 1) == false) {
|
||||
desc->in_rh = false;
|
||||
|
||||
for (i = 0; i < prevs_nb; i++)
|
||||
for (i = 0; i < prevs_nb; i++) {
|
||||
if (i > 0)
|
||||
ck_rhs_set_probes(map, prevs[i], prev_probes[i - 1]);
|
||||
ck_rhs_unset_rh(map, prevs[i]);
|
||||
}
|
||||
if (last_slot != -1)
|
||||
ck_rhs_set_probes(map, last_slot, prev_probes[prevs_nb - 1]);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
@ -951,10 +958,13 @@ restart:
|
|||
desc = ck_rhs_desc(map, first);
|
||||
int old_probes = desc->probes;
|
||||
|
||||
last_slot = first;
|
||||
|
||||
desc->probes = n_probes;
|
||||
h = ck_rhs_get_first_offset(map, first, n_probes);
|
||||
ck_rhs_map_bound_set(map, h, n_probes);
|
||||
prev = orig_slot;
|
||||
prev_probes[prevs_nb] = old_probes;
|
||||
prevs[prevs_nb++] = prev;
|
||||
n_probes = old_probes;
|
||||
goto restart;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue