Merge pull request #110 from Sonicadvance1/hashmap_64bit

Support 64bit address hashing in the CommonHashClass.
This commit is contained in:
sudonim1 2014-07-15 23:15:03 +01:00
commit 6f0f7ce948
1 changed files with 6 additions and 3 deletions

View File

@ -343,14 +343,17 @@ public:
/// This method has been optimized to give typical 32 bit pointers a reasonably /// This method has been optimized to give typical 32 bit pointers a reasonably
/// wide spread across the integer spectrum. /// wide spread across the integer spectrum.
/// Note: /// Note:
/// This method is optimized for 32 bit pointers only. 64 bit pointer support /// This method is optimized for 32 bit pointers only.
/// has not been implemented, and thus on 64 bit platforms performance could be poor or, /// 64 bit pointer support is implemented but not optimized.
/// worse yet, results may not have a high degree of uniqueness.
/// </remarks> /// </remarks>
hash_key_t operator()( const void* addr ) const hash_key_t operator()( const void* addr ) const
{ {
#ifdef _ARCH_64
return GetCommonHash((u64)addr);
#else
hash_key_t key = (hash_key_t) addr; hash_key_t key = (hash_key_t) addr;
return (hash_key_t)((key >> 3) * 2654435761ul); return (hash_key_t)((key >> 3) * 2654435761ul);
#endif
} }