From a138d3cedeca2f71be0b5cb96c3f9441e4c4e919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Mon, 23 May 2022 23:26:10 -0700 Subject: [PATCH] Cleanup. --- src/hash.cpp | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/src/hash.cpp b/src/hash.cpp index 09f9ea5..df7045b 100644 --- a/src/hash.cpp +++ b/src/hash.cpp @@ -188,6 +188,11 @@ static void mixTail(HashMurmur2APod& _self, const uint8_t*& _data, int32_t& _len } } +BX_FORCE_INLINE uint32_t readAligned(const uint8_t* _data) +{ + return *(uint32_t*)_data; +} + BX_FORCE_INLINE uint32_t readUnaligned(const uint8_t* _data) { if (BX_ENABLED(BX_CPU_ENDIAN_BIG) ) @@ -210,7 +215,10 @@ BX_FORCE_INLINE uint32_t readUnaligned(const uint8_t* _data) } } -static void addAligned(HashMurmur2APod& _self, const uint8_t* _data, int32_t _len) +typedef uint32_t (*ReadDataFn)(const uint8_t* _data); + +template +static void addData(HashMurmur2APod& _self, const uint8_t* _data, int32_t _len) { _self.m_size += _len; @@ -218,26 +226,7 @@ static void addAligned(HashMurmur2APod& _self, const uint8_t* _data, int32_t _le while (_len >= 4) { - uint32_t kk = *(uint32_t*)_data; - - mmix(_self.m_hash, kk); - - _data += 4; - _len -= 4; - } - - mixTail(_self, _data, _len); -} - -static void addUnaligned(HashMurmur2APod& _self, const uint8_t* _data, int32_t _len) -{ - _self.m_size += _len; - - mixTail(_self, _data, _len); - - while (_len >= 4) - { - uint32_t kk = readUnaligned(_data); + uint32_t kk = FnT(_data); mmix(_self.m_hash, kk); @@ -256,11 +245,11 @@ void HashMurmur2A::add(const void* _data, int32_t _len) if (BX_UNLIKELY(!isAligned(_data, 4) ) ) { - addUnaligned(self, data, _len); + addData(self, data, _len); return; } - addAligned(self, data, _len); + addData(self, data, _len); } uint32_t HashMurmur2A::end()