summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQi Wang <interwq@gwu.edu>2017-11-16 22:27:23 (GMT)
committerQi Wang <interwq@gmail.com>2017-11-20 05:12:27 (GMT)
commite475d03752d53e198143fdf58e7d0e2e14e5f1a2 (patch)
tree9b3bf04b2d447e9bf53efb16aa93fee1eb938efb /src
parent3e64dae802b9f7cd4f860b0d29126cd727d5166b (diff)
downloadjemalloc-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.c24
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);
}