diff --git a/AK/HashFunctions.h b/AK/HashFunctions.h index f20e4465890..b36fd1d60a9 100644 --- a/AK/HashFunctions.h +++ b/AK/HashFunctions.h @@ -19,7 +19,7 @@ constexpr unsigned int_hash(u32 key) return key; } -constexpr unsigned double_hash(u32 key) +constexpr unsigned rehash_for_collision(u32 key) { unsigned const magic = 0xBA5EDB01; if (key == magic) diff --git a/AK/HashTable.h b/AK/HashTable.h index d4238aafaf5..4754e3da41d 100644 --- a/AK/HashTable.h +++ b/AK/HashTable.h @@ -594,7 +594,7 @@ private: } } else if (target_bucket->state == BucketState::Rehashed) { // If the target bucket is already re-hashed, we do normal probing. - target_hash = double_hash(target_hash); + target_hash = rehash_for_collision(target_hash); target_bucket = &m_buckets[target_hash % m_capacity]; } else { VERIFY(target_bucket->state != BucketState::End); @@ -676,7 +676,7 @@ private: if (bucket.state != BucketState::Used && bucket.state != BucketState::Deleted) return nullptr; - hash = double_hash(hash); + hash = rehash_for_collision(hash); } } @@ -703,7 +703,7 @@ private: return const_cast(first_empty_bucket); } - hash = double_hash(hash); + hash = rehash_for_collision(hash); } } [[nodiscard]] BucketType& lookup_for_writing(T const& value) diff --git a/Tests/AK/TestHashFunctions.cpp b/Tests/AK/TestHashFunctions.cpp index f5750c887e8..b440380d2ca 100644 --- a/Tests/AK/TestHashFunctions.cpp +++ b/Tests/AK/TestHashFunctions.cpp @@ -15,11 +15,11 @@ TEST_CASE(int_hash) static_assert(int_hash(0) == 1177991625u); } -TEST_CASE(double_hash) +TEST_CASE(rehash_for_collision) { - static_assert(double_hash(666) == 171644115u); - static_assert(double_hash(0) == 1189591134u); - static_assert(double_hash(0xBA5EDB01) == 0u); + static_assert(rehash_for_collision(666) == 171644115u); + static_assert(rehash_for_collision(0) == 1189591134u); + static_assert(rehash_for_collision(0xBA5EDB01) == 0u); } TEST_CASE(pair_int_hash)