summaryrefslogtreecommitdiffstats
path: root/src/chunk_dss.c
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2015-08-04 17:49:46 (GMT)
committerJason Evans <jasone@canonware.com>2015-08-07 07:50:58 (GMT)
commit8fadb1a8c2d0219aded566bc5fac7d29cff9bb67 (patch)
tree2bb5ef64b257a1cbcf6c4880f23f24ef9d989e13 /src/chunk_dss.c
parent5716d97f7575708453ca477651eff6f1ac653dd1 (diff)
downloadjemalloc-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.c6
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);