aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2016-04-06 11:54:44 -0700
committerJason Evans <jasone@canonware.com>2016-04-11 02:35:00 -0700
commit245ae6036c09cc11a72fab4335495d95cddd5beb (patch)
tree675007737fcc682ab3929c66f1a590e7ed144c23 /include
parent96aa67aca89725f0b1df3257421a3d0a48eb2700 (diff)
downloadplatform_external_jemalloc_new-245ae6036c09cc11a72fab4335495d95cddd5beb.tar.gz
platform_external_jemalloc_new-245ae6036c09cc11a72fab4335495d95cddd5beb.tar.bz2
platform_external_jemalloc_new-245ae6036c09cc11a72fab4335495d95cddd5beb.zip
Support --with-lg-page values larger than actual page size.
During over-allocation in preparation for creating aligned mappings, allocate one more page than necessary if PAGE is the actual page size, so that trimming still succeeds even if the system returns a mapping that has less than PAGE alignment. This allows compiling with e.g. 64 KiB "pages" on systems that actually use 4 KiB pages. Note that for e.g. --with-lg-page=21, it is also necessary to increase the chunk size (e.g. --with-malloc-conf=lg_chunk:22) so that there are at least two "pages" per chunk. In practice this isn't a particularly compelling configuration because so much (unusable) virtual memory is dedicated to chunk headers.
Diffstat (limited to 'include')
-rw-r--r--include/jemalloc/internal/bitmap.h4
-rw-r--r--include/jemalloc/internal/jemalloc_internal.h.in4
2 files changed, 4 insertions, 4 deletions
diff --git a/include/jemalloc/internal/bitmap.h b/include/jemalloc/internal/bitmap.h
index 894695f4..36f38b59 100644
--- a/include/jemalloc/internal/bitmap.h
+++ b/include/jemalloc/internal/bitmap.h
@@ -17,8 +17,8 @@ typedef unsigned long bitmap_t;
/*
* Do some analysis on how big the bitmap is before we use a tree. For a brute
- * force linear search, if we would have to call ffsl more than 2^3 times, use a
- * tree instead.
+ * force linear search, if we would have to call ffs_lu() more than 2^3 times,
+ * use a tree instead.
*/
#if LG_BITMAP_MAXBITS - LG_BITMAP_GROUP_NBITS > 3
# define USE_TREE
diff --git a/include/jemalloc/internal/jemalloc_internal.h.in b/include/jemalloc/internal/jemalloc_internal.h.in
index 55ca7140..0b57b82a 100644
--- a/include/jemalloc/internal/jemalloc_internal.h.in
+++ b/include/jemalloc/internal/jemalloc_internal.h.in
@@ -741,7 +741,7 @@ sa2u(size_t size, size_t alignment)
* Calculate the size of the over-size run that arena_palloc()
* would need to allocate in order to guarantee the alignment.
*/
- if (usize + large_pad + alignment - PAGE <= arena_maxrun)
+ if (usize + large_pad + alignment <= arena_maxrun)
return (usize);
}
@@ -771,7 +771,7 @@ sa2u(size_t size, size_t alignment)
* Calculate the multi-chunk mapping that huge_palloc() would need in
* order to guarantee the alignment.
*/
- if (usize + alignment - PAGE < usize) {
+ if (usize + alignment < usize) {
/* size_t overflow. */
return (0);
}