mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
AK: Add ptr_hash to use int_hash or u64_hash depending on pointer size
This commit is contained in:
parent
32e6453b0b
commit
7e6ac544f7
Notes:
sideshowbarker
2024-07-19 09:04:20 +09:00
Author: https://github.com/jcs Commit: https://github.com/SerenityOS/serenity/commit/7e6ac544f77 Pull-request: https://github.com/SerenityOS/serenity/pull/1233 Reviewed-by: https://github.com/awesomekling Reviewed-by: https://github.com/bugaevc
3 changed files with 10 additions and 2 deletions
|
@ -50,3 +50,11 @@ inline unsigned u64_hash(u64 key)
|
|||
u32 last = key >> 32;
|
||||
return pair_int_hash(first, last);
|
||||
}
|
||||
|
||||
inline unsigned ptr_hash(uintptr_t ptr)
|
||||
{
|
||||
if constexpr(sizeof(ptr) == 8)
|
||||
return u64_hash((u64)ptr);
|
||||
else
|
||||
return int_hash((u32)ptr);
|
||||
}
|
||||
|
|
|
@ -204,7 +204,7 @@ inline void swap(OwnPtr<T>& a, OwnPtr<U>& b)
|
|||
template<typename T>
|
||||
struct Traits<OwnPtr<T>> : public GenericTraits<OwnPtr<T>> {
|
||||
using PeekType = const T*;
|
||||
static unsigned hash(const OwnPtr<T>& p) { return int_hash((u32)p.ptr()); }
|
||||
static unsigned hash(const OwnPtr<T>& p) { return ptr_hash(p.ptr()); }
|
||||
static bool equals(const OwnPtr<T>& a, const OwnPtr<T>& b) { return a.ptr() == b.ptr(); }
|
||||
};
|
||||
|
||||
|
|
|
@ -278,7 +278,7 @@ inline const LogStream& operator<<(const LogStream& stream, const RefPtr<T>& val
|
|||
template<typename T>
|
||||
struct Traits<RefPtr<T>> : public GenericTraits<RefPtr<T>> {
|
||||
using PeekType = const T*;
|
||||
static unsigned hash(const RefPtr<T>& p) { return int_hash((u32)p.ptr()); }
|
||||
static unsigned hash(const RefPtr<T>& p) { return ptr_hash(p.ptr()); }
|
||||
static bool equals(const RefPtr<T>& a, const RefPtr<T>& b) { return a.ptr() == b.ptr(); }
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue