diff options
author | Salvatore Sanfilippo <antirez@gmail.com> | 2017-02-19 14:59:39 +0000 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2017-02-21 17:16:35 +0100 |
commit | 620e48b1d7a9ef09c438ee3295b46c1d1a32321d (patch) | |
tree | 53bf8588efba8f250ceeb0610f19d1bf40cc8781 | |
parent | 980d8805da90287479d7b41844871b6595d0eb3c (diff) | |
download | redis-620e48b1d7a9ef09c438ee3295b46c1d1a32321d.tar.gz |
ARM: Avoid memcpy() in MurmurHash64A() if we are using 64 bit ARM.
However note that in architectures supporting 64 bit unaligned
accesses memcpy(...,...,8) is likely translated to a simple
word memory movement anyway.
-rw-r--r-- | src/Makefile | 1 | ||||
-rw-r--r-- | src/config.h | 3 | ||||
-rw-r--r-- | src/hyperloglog.c | 2 |
3 files changed, 5 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile index 3f445f40f..f211eb84b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -14,6 +14,7 @@ release_hdr := $(shell sh -c './mkreleasehdr.sh') uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') +uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not') OPTIMIZATION?=-O2 DEPENDENCY_TARGETS=hiredis linenoise lua NODEPS:=clean distclean diff --git a/src/config.h b/src/config.h index 354f8f5e5..1005dcc2a 100644 --- a/src/config.h +++ b/src/config.h @@ -211,5 +211,8 @@ void setproctitle(const char *fmt, ...); #if defined(__arm) && !defined(__arm__) #define __arm__ #endif +#if defined (__aarch64__) && !defined(__arm64__) +#define __arm64__ +#endif #endif diff --git a/src/hyperloglog.c b/src/hyperloglog.c index 7de5786f9..b8a63a73f 100644 --- a/src/hyperloglog.c +++ b/src/hyperloglog.c @@ -401,7 +401,7 @@ uint64_t MurmurHash64A (const void * key, int len, unsigned int seed) { uint64_t k; #if (BYTE_ORDER == LITTLE_ENDIAN) - #ifdef __arm__ + #if defined(__arm__) && !defined(__arm64__) memcpy(&k,data,sizeof(uint64_t)); #else k = *((uint64_t*)data); |