Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
e084b5a3
Commit
e084b5a3
authored
Feb 21, 2017
by
antirez
Browse files
Merge branch 'arm' into unstable
parents
cd90389b
7329cc39
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/Makefile
View file @
e084b5a3
...
...
@@ -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
...
...
@@ -27,11 +28,14 @@ PREFIX?=/usr/local
INSTALL_BIN
=
$(PREFIX)
/bin
INSTALL
=
install
# Default allocator
# Default allocator defaults to Jemalloc if it's not an ARM
MALLOC
=
libc
ifneq
($(uname_M),armv6l)
ifneq
($(uname_M),armv7l)
ifeq
($(uname_S),Linux)
MALLOC
=
jemalloc
e
lse
MALLOC
=
libc
e
ndif
endif
endif
# Backwards compatibility for selecting an allocator
...
...
src/bitops.c
View file @
e084b5a3
...
...
@@ -654,8 +654,11 @@ void bitopCommand(client *c) {
/* Fast path: as far as we have data for all the input bitmaps we
* can take a fast path that performs much better than the
* vanilla algorithm. */
* vanilla algorithm. On ARM we skip the fast path since it will
* result in GCC compiling the code using multiple-words load/store
* operations that are not supported even in ARM >= v6. */
j
=
0
;
#ifndef __arm__
if
(
minlen
>=
sizeof
(
unsigned
long
)
*
4
&&
numkeys
<=
16
)
{
unsigned
long
*
lp
[
16
];
unsigned
long
*
lres
=
(
unsigned
long
*
)
res
;
...
...
@@ -716,6 +719,7 @@ void bitopCommand(client *c) {
}
}
}
#endif
/* j is set to the next byte to process by the previous loop. */
for
(;
j
<
maxlen
;
j
++
)
{
...
...
src/config.h
View file @
e084b5a3
...
...
@@ -206,4 +206,13 @@ void setproctitle(const char *fmt, ...);
#endif
#endif
/* Make sure we can test for ARM just checking for __arm__, since sometimes
* __arm is defined but __arm__ is not. */
#if defined(__arm) && !defined(__arm__)
#define __arm__
#endif
#if defined (__aarch64__) && !defined(__arm64__)
#define __arm64__
#endif
#endif
src/hyperloglog.c
View file @
e084b5a3
...
...
@@ -401,7 +401,11 @@ uint64_t MurmurHash64A (const void * key, int len, unsigned int seed) {
uint64_t
k
;
#if (BYTE_ORDER == LITTLE_ENDIAN)
#if defined(__arm__) && !defined(__arm64__)
memcpy
(
&
k
,
data
,
sizeof
(
uint64_t
));
#else
k
=
*
((
uint64_t
*
)
data
);
#endif
#else
k
=
(
uint64_t
)
data
[
0
];
k
|=
(
uint64_t
)
data
[
1
]
<<
8
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment