improve hashing on structs, especially prefabs
Use the structure-type name, in addition to the structure content. Including the name is espeically useful for distinguishing prefabs structs that differ in the prefab name.
This commit is contained in:
parent
97d951af54
commit
9b4f830268
|
@ -1699,6 +1699,12 @@ static uintptr_t equal_hash_key(Scheme_Object *o, uintptr_t k, Hash_Info *hi)
|
||||||
|
|
||||||
hi->depth += 2;
|
hi->depth += 2;
|
||||||
|
|
||||||
|
/* Use structure-type names (especially for prefabs): */
|
||||||
|
for (i = s1->stype->name_pos+1; i--; ) {
|
||||||
|
k += equal_hash_key(s1->stype->parent_types[i]->name, 0, hi);
|
||||||
|
MZ_MIX(k);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = SCHEME_STRUCT_NUM_SLOTS(s1); i--; ) {
|
for (i = SCHEME_STRUCT_NUM_SLOTS(s1); i--; ) {
|
||||||
if (SAME_OBJ(o, orig_obj))
|
if (SAME_OBJ(o, orig_obj))
|
||||||
elem = s1->slots[i];
|
elem = s1->slots[i];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user