mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-23 21:23:06 +00:00
Prefer pages_purge_forced() over memset().
This has the dual advantages of allowing for sparsely used large allocations, and relying on the kernel to supply zeroed pages, which tends to be very fast on modern systems.
This commit is contained in:
13
src/extent.c
13
src/extent.c
@@ -759,8 +759,11 @@ extent_recycle(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks,
|
||||
|
||||
if (*zero) {
|
||||
if (!extent_zeroed_get(extent)) {
|
||||
memset(extent_addr_get(extent), 0,
|
||||
extent_usize_get(extent));
|
||||
if (pages_purge_forced(extent_base_get(extent),
|
||||
extent_size_get(extent))) {
|
||||
memset(extent_addr_get(extent), 0,
|
||||
extent_usize_get(extent));
|
||||
}
|
||||
} else if (config_debug) {
|
||||
size_t i;
|
||||
size_t *p = (size_t *)(uintptr_t)
|
||||
@@ -971,7 +974,11 @@ extent_grow_retained(tsdn_t *tsdn, arena_t *arena,
|
||||
extent_interior_register(tsdn, rtree_ctx, extent);
|
||||
}
|
||||
if (*zero && !extent_zeroed_get(extent)) {
|
||||
memset(extent_addr_get(extent), 0, extent_usize_get(extent));
|
||||
if (pages_purge_forced(extent_base_get(extent),
|
||||
extent_size_get(extent))) {
|
||||
memset(extent_addr_get(extent), 0,
|
||||
extent_usize_get(extent));
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Increment extent_grow_next, but take care to do so atomically and
|
||||
|
||||
Reference in New Issue
Block a user