py/map: Store key/value in earliest possible slot in hash table.

This change makes the code behave how it was supposed to work when first
written.  The avail_slot variable is set to the first free slot when
looking for a key (which would come from deleting an entry).  So it's
more efficient (for subsequent lookups) to insert a new key into such a
slot, rather than the very last slot that was searched.
pull/1632/head^2
Damien George 2015-11-19 01:27:28 +00:00
rodzic db0a5aed39
commit 593faf14c4
1 zmienionych plików z 3 dodań i 3 usunięć

Wyświetl plik

@ -214,12 +214,12 @@ mp_map_elem_t *mp_map_lookup(mp_map_t *map, mp_obj_t index, mp_map_lookup_kind_t
if (avail_slot == NULL) {
avail_slot = slot;
}
slot->key = index;
slot->value = MP_OBJ_NULL;
avail_slot->key = index;
avail_slot->value = MP_OBJ_NULL;
if (!MP_OBJ_IS_QSTR(index)) {
map->all_keys_are_qstrs = 0;
}
return slot;
return avail_slot;
} else {
return NULL;
}