diff options
author | Jason Evans <jasone@canonware.com> | 2015-08-04 17:49:46 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2015-08-07 07:50:58 (GMT) |
commit | 8fadb1a8c2d0219aded566bc5fac7d29cff9bb67 (patch) | |
tree | 2bb5ef64b257a1cbcf6c4880f23f24ef9d989e13 /src/chunk_dss.c | |
parent | 5716d97f7575708453ca477651eff6f1ac653dd1 (diff) | |
download | jemalloc-8fadb1a8c2d0219aded566bc5fac7d29cff9bb67.zip jemalloc-8fadb1a8c2d0219aded566bc5fac7d29cff9bb67.tar.gz jemalloc-8fadb1a8c2d0219aded566bc5fac7d29cff9bb67.tar.bz2 |
Implement chunk hook support for page run commit/decommit.
Cascade from decommit to purge when purging unused dirty pages, so that
it is possible to decommit cleaned memory rather than just purging. For
non-Windows debug builds, decommit runs rather than purging them, since
this causes access of deallocated runs to segfault.
This resolves #251.
Diffstat (limited to 'src/chunk_dss.c')
-rw-r--r-- | src/chunk_dss.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/chunk_dss.c b/src/chunk_dss.c index 2c115e0..1035581 100644 --- a/src/chunk_dss.c +++ b/src/chunk_dss.c @@ -67,7 +67,7 @@ chunk_dss_prec_set(dss_prec_t dss_prec) void * chunk_alloc_dss(arena_t *arena, void *new_addr, size_t size, size_t alignment, - bool *zero) + bool *zero, bool *commit) { void *ret; @@ -137,13 +137,15 @@ chunk_alloc_dss(arena_t *arena, void *new_addr, size_t size, size_t alignment, chunk_hooks_t chunk_hooks = CHUNK_HOOKS_INITIALIZER; chunk_dalloc_wrapper(arena, - &chunk_hooks, cpad, cpad_size); + &chunk_hooks, cpad, cpad_size, + true); } if (*zero) { JEMALLOC_VALGRIND_MAKE_MEM_UNDEFINED( ret, size); memset(ret, 0, size); } + *commit = true; return (ret); } } while (dss_prev != (void *)-1); |