From dd4c3c227784607a537491cb51aa203d17c4f21f Mon Sep 17 00:00:00 2001 From: Vlad Brezae Date: Fri, 17 Feb 2017 02:25:44 +0200 Subject: [PATCH] [runtime] Use better hashing for refobject_hash --- mono/metadata/reflection.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mono/metadata/reflection.c b/mono/metadata/reflection.c index 1ddb08757a3..bf97132d85e 100644 --- a/mono/metadata/reflection.c +++ b/mono/metadata/reflection.c @@ -165,7 +165,10 @@ reflected_equal (gconstpointer a, gconstpointer b) guint reflected_hash (gconstpointer a) { const ReflectedEntry *ea = (const ReflectedEntry *)a; - return mono_aligned_addr_hash (ea->item); + /* Combine hashes for item and refclass. Identical to boost's hash_combine */ + guint seed = mono_aligned_addr_hash (ea->item) + 0x9e3779b9; + seed ^= mono_aligned_addr_hash (ea->refclass) + 0x9e3779b9 + (seed << 6) + (seed >> 2); + return seed; } -- 2.25.1