summaryrefslogtreecommitdiffstats
path: root/src/chunk.c
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2017-03-01 03:09:23 (GMT)
committerJason Evans <jasone@canonware.com>2017-03-01 03:09:23 (GMT)
commit04380e79f1e2428bd0ad000bbc6e3d2dfc6b66a5 (patch)
tree85f88607465908a7b66ad70d4caca69a0836189f /src/chunk.c
parentf1f76357313e7dcad7262f17a48ff0a2e005fcdc (diff)
parent700253e1f2f40d4a74e361fa1e688986c361dba4 (diff)
downloadjemalloc-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.c14
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 *