diff options
author | Jason Evans <jasone@canonware.com> | 2017-03-01 03:09:23 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2017-03-01 03:09:23 (GMT) |
commit | 04380e79f1e2428bd0ad000bbc6e3d2dfc6b66a5 (patch) | |
tree | 85f88607465908a7b66ad70d4caca69a0836189f /src/chunk.c | |
parent | f1f76357313e7dcad7262f17a48ff0a2e005fcdc (diff) | |
parent | 700253e1f2f40d4a74e361fa1e688986c361dba4 (diff) | |
download | jemalloc-4.5.0.zip jemalloc-4.5.0.tar.gz jemalloc-4.5.0.tar.bz2 |
Merge branch 'rc-4.5.0'4.5.0
Diffstat (limited to 'src/chunk.c')
-rw-r--r-- | src/chunk.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/chunk.c b/src/chunk.c index c1c514a..94f28f2 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -141,7 +141,7 @@ chunk_hooks_assure_initialized(tsdn_t *tsdn, arena_t *arena, } bool -chunk_register(tsdn_t *tsdn, const void *chunk, const extent_node_t *node) +chunk_register(const void *chunk, const extent_node_t *node, bool *gdump) { assert(extent_node_addr_get(node) == chunk); @@ -160,8 +160,7 @@ chunk_register(tsdn_t *tsdn, const void *chunk, const extent_node_t *node) */ high = atomic_read_z(&highchunks); } - if (cur > high && prof_gdump_get_unlocked()) - prof_gdump(tsdn); + *gdump = (cur > high && prof_gdump_get_unlocked()); } return (false); @@ -189,12 +188,17 @@ chunk_deregister(const void *chunk, const extent_node_t *node) static extent_node_t * chunk_first_best_fit(arena_t *arena, extent_tree_t *chunks_szsnad, size_t size) { + extent_node_t *node; + size_t qsize; extent_node_t key; assert(size == CHUNK_CEILING(size)); - extent_node_init(&key, arena, NULL, size, 0, false, false); - return (extent_tree_szsnad_nsearch(chunks_szsnad, &key)); + qsize = extent_size_quantize_ceil(size); + extent_node_init(&key, arena, NULL, qsize, 0, false, false); + node = extent_tree_szsnad_nsearch(chunks_szsnad, &key); + assert(node == NULL || extent_node_size_get(node) >= size); + return node; } static void * |