summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2016-10-28 04:26:33 (GMT)
committerJason Evans <jasone@canonware.com>2016-11-15 22:04:35 (GMT)
commit87004d238cc8db5ea531ef1900a5e6386ccd3daf (patch)
treeda90655b30cd0fb8c140bdc0c35763068ca6125d
parent2379479225e5be5f93626e13a37577c76a670fb3 (diff)
downloadjemalloc-87004d238cc8db5ea531ef1900a5e6386ccd3daf.zip
jemalloc-87004d238cc8db5ea531ef1900a5e6386ccd3daf.tar.gz
jemalloc-87004d238cc8db5ea531ef1900a5e6386ccd3daf.tar.bz2
Avoid negation of unsigned numbers.
Rather than relying on two's complement negation for alignment mask generation, use bitwise not and addition. This dodges warnings from MSVC, and should be strength-reduced by compiler optimization anyway.
-rw-r--r--include/jemalloc/internal/jemalloc_internal.h.in4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/jemalloc/internal/jemalloc_internal.h.in b/include/jemalloc/internal/jemalloc_internal.h.in
index fdc8fef..e7ace7d 100644
--- a/include/jemalloc/internal/jemalloc_internal.h.in
+++ b/include/jemalloc/internal/jemalloc_internal.h.in
@@ -337,7 +337,7 @@ typedef unsigned szind_t;
/* Return the nearest aligned address at or below a. */
#define ALIGNMENT_ADDR2BASE(a, alignment) \
- ((void *)((uintptr_t)(a) & (-(alignment))))
+ ((void *)((uintptr_t)(a) & ((~(alignment)) + 1)))
/* Return the offset between a and the nearest aligned address at or below a. */
#define ALIGNMENT_ADDR2OFFSET(a, alignment) \
@@ -345,7 +345,7 @@ typedef unsigned szind_t;
/* Return the smallest alignment multiple that is >= s. */
#define ALIGNMENT_CEILING(s, alignment) \
- (((s) + (alignment - 1)) & (-(alignment)))
+ (((s) + (alignment - 1)) & ((~(alignment)) + 1))
/* Declare a variable-length array. */
#if __STDC_VERSION__ < 199901L