1 | #include "jemalloc/internal/jemalloc_preamble.h" |
2 | #include "jemalloc/internal/jemalloc_internal_includes.h" |
3 | |
4 | #include "jemalloc/internal/assert.h" |
5 | #include "jemalloc/internal/extent_mmap.h" |
6 | |
7 | /******************************************************************************/ |
8 | /* Data. */ |
9 | |
10 | bool opt_retain = |
11 | #ifdef JEMALLOC_RETAIN |
12 | true |
13 | #else |
14 | false |
15 | #endif |
16 | ; |
17 | |
18 | /******************************************************************************/ |
19 | |
20 | void * |
21 | extent_alloc_mmap(void *new_addr, size_t size, size_t alignment, bool *zero, |
22 | bool *commit) { |
23 | assert(alignment == ALIGNMENT_CEILING(alignment, PAGE)); |
24 | void *ret = pages_map(new_addr, size, alignment, commit); |
25 | if (ret == NULL) { |
26 | return NULL; |
27 | } |
28 | assert(ret != NULL); |
29 | if (*commit) { |
30 | *zero = true; |
31 | } |
32 | return ret; |
33 | } |
34 | |
35 | bool |
36 | extent_dalloc_mmap(void *addr, size_t size) { |
37 | if (!opt_retain) { |
38 | pages_unmap(addr, size); |
39 | } |
40 | return opt_retain; |
41 | } |
42 | |