Update namedict.c

This commit is contained in:
blueloveTH 2025-06-29 22:03:54 +08:00
parent 1fe211d728
commit a1cdfb6739

View File

@ -14,7 +14,7 @@
ok = true; \ ok = true; \
break; \ break; \
} \ } \
i = (i + 1) & self->mask; \ i = (5 * i + 1) & self->mask; \
} }
#define HASH_PROBE_0 HASH_PROBE_1 #define HASH_PROBE_0 HASH_PROBE_1
@ -105,7 +105,7 @@ bool NameDict__del(NameDict* self, py_Name key) {
uint32_t posToRemove = i; uint32_t posToRemove = i;
uint32_t posToShift = posToRemove; uint32_t posToShift = posToRemove;
while(true) { while(true) {
posToShift = (posToShift + 1) & self->mask; posToShift = (5 * posToShift + 1) & self->mask;
if(self->items[posToShift].key == NULL) break; if(self->items[posToShift].key == NULL) break;
uintptr_t hash_z = (uintptr_t)self->items[posToShift].key; uintptr_t hash_z = (uintptr_t)self->items[posToShift].key;
uintptr_t insertPos = hash_z & self->mask; uintptr_t insertPos = hash_z & self->mask;