Allow override for unaligned reads in SpookyHashV2
[folly.git] / folly / SpookyHashV2.cpp
index e2f665f2259dd6d830361a0e4511b6928bbdaa57..877e0e7295c2184d8dfb99e804302264b9eea0fb 100644 (file)
 
 #include <folly/SpookyHashV2.h>
 
-#include <cstring>
+#include <folly/Portability.h>
 
-#define ALLOW_UNALIGNED_READS 1
+#include <cstring>
 
 namespace folly {
 namespace hash {
 
+static constexpr auto kAllowUnalignedReads = bool(FOLLY_HAVE_UNALIGNED_READS);
+
 //
 // short hash ... it could be used on any message,
 // but it's used by Spooky just for short messages.
@@ -56,7 +58,7 @@ void SpookyHashV2::Short(
 
     u.p8 = (const uint8_t *)message;
 
-    if (!ALLOW_UNALIGNED_READS && (u.i & 0x7))
+    if (!kAllowUnalignedReads && (u.i & 0x7))
     {
         memcpy(buf, message, length);
         u.p64 = buf;
@@ -176,7 +178,7 @@ void SpookyHashV2::Hash128(
     end = u.p64 + (length/sc_blockSize)*sc_numVars;
 
     // handle all whole sc_blockSize blocks of bytes
-    if (ALLOW_UNALIGNED_READS || ((u.i & 0x7) == 0))
+    if (kAllowUnalignedReads || ((u.i & 0x7) == 0))
     {
         while (u.p64 < end)
         {
@@ -284,7 +286,7 @@ void SpookyHashV2::Update(const void *message, size_t length)
     // handle all whole blocks of sc_blockSize bytes
     end = u.p64 + (length/sc_blockSize)*sc_numVars;
     remainder = (uint8_t)(length-((const uint8_t *)end-u.p8));
-    if (ALLOW_UNALIGNED_READS || (u.i & 0x7) == 0)
+    if (kAllowUnalignedReads || (u.i & 0x7) == 0)
     {
         while (u.p64 < end)
         {