| #define JEMALLOC_EXTENT_MMAP_C_ |
| #include "jemalloc/internal/jemalloc_preamble.h" |
| #include "jemalloc/internal/jemalloc_internal_includes.h" |
| |
| #include "jemalloc/internal/assert.h" |
| #include "jemalloc/internal/extent_mmap.h" |
| |
| /******************************************************************************/ |
| /* Data. */ |
| |
| bool opt_retain = |
| #ifdef JEMALLOC_RETAIN |
| true |
| #else |
| false |
| #endif |
| ; |
| |
| /******************************************************************************/ |
| |
| void * |
| extent_alloc_mmap(void *new_addr, size_t size, size_t alignment, bool *zero, |
| bool *commit) { |
| void *ret = pages_map(new_addr, size, ALIGNMENT_CEILING(alignment, |
| PAGE), commit); |
| if (ret == NULL) { |
| return NULL; |
| } |
| assert(ret != NULL); |
| if (*commit) { |
| *zero = true; |
| } |
| return ret; |
| } |
| |
| bool |
| extent_dalloc_mmap(void *addr, size_t size) { |
| if (!opt_retain) { |
| pages_unmap(addr, size); |
| } |
| return opt_retain; |
| } |