diff options
author | Qi Wang <interwq@gwu.edu> | 2017-11-16 22:27:23 (GMT) |
---|---|---|
committer | Qi Wang <interwq@gmail.com> | 2017-11-20 05:12:27 (GMT) |
commit | e475d03752d53e198143fdf58e7d0e2e14e5f1a2 (patch) | |
tree | 9b3bf04b2d447e9bf53efb16aa93fee1eb938efb /src | |
parent | 3e64dae802b9f7cd4f860b0d29126cd727d5166b (diff) | |
download | jemalloc-e475d03752d53e198143fdf58e7d0e2e14e5f1a2.zip jemalloc-e475d03752d53e198143fdf58e7d0e2e14e5f1a2.tar.gz jemalloc-e475d03752d53e198143fdf58e7d0e2e14e5f1a2.tar.bz2 |
Avoid setting zero and commit if split fails in extent_recycle.
Diffstat (limited to 'src')
-rw-r--r-- | src/extent.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/extent.c b/src/extent.c index 23b6401..7c7da29 100644 --- a/src/extent.c +++ b/src/extent.c @@ -791,7 +791,7 @@ static extent_t * extent_recycle_extract(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks, rtree_ctx_t *rtree_ctx, extents_t *extents, void *new_addr, size_t size, size_t pad, size_t alignment, bool slab, - bool *zero, bool *commit, bool growing_retained) { + bool growing_retained) { witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, growing_retained ? 1 : 0); assert(alignment > 0); @@ -849,13 +849,6 @@ extent_recycle_extract(tsdn_t *tsdn, arena_t *arena, extent_activate_locked(tsdn, arena, extents, extent, false); malloc_mutex_unlock(tsdn, &extents->mtx); - if (extent_zeroed_get(extent)) { - *zero = true; - } - if (extent_committed_get(extent)) { - *commit = true; - } - return extent; } @@ -1021,16 +1014,12 @@ extent_recycle(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks, rtree_ctx_t rtree_ctx_fallback; rtree_ctx_t *rtree_ctx = tsdn_rtree_ctx(tsdn, &rtree_ctx_fallback); - bool committed = false; extent_t *extent = extent_recycle_extract(tsdn, arena, r_extent_hooks, - rtree_ctx, extents, new_addr, size, pad, alignment, slab, zero, - &committed, growing_retained); + rtree_ctx, extents, new_addr, size, pad, alignment, slab, + growing_retained); if (extent == NULL) { return NULL; } - if (committed) { - *commit = true; - } extent = extent_recycle_split(tsdn, arena, r_extent_hooks, rtree_ctx, extents, new_addr, size, pad, alignment, slab, szind, extent, @@ -1049,6 +1038,13 @@ extent_recycle(tsdn_t *tsdn, arena_t *arena, extent_hooks_t **r_extent_hooks, extent_zeroed_set(extent, true); } + if (extent_committed_get(extent)) { + *commit = true; + } + if (extent_zeroed_get(extent)) { + *zero = true; + } + if (pad != 0) { extent_addr_randomize(tsdn, extent, alignment); } |