MCPcopy Create free account
hub / github.com/F-Stack/f-stack / extent_alloc_retained

Function extent_alloc_retained

app/redis-6.2.6/deps/jemalloc/src/extent.c:1389–1416  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1387}
1388
1389static extent_t *
1390extent_alloc_retained(tsdn_t *tsdn, arena_t *arena,
1391 extent_hooks_t **r_extent_hooks, void *new_addr, size_t size, size_t pad,
1392 size_t alignment, bool slab, szind_t szind, bool *zero, bool *commit) {
1393 assert(size != 0);
1394 assert(alignment != 0);
1395
1396 malloc_mutex_lock(tsdn, &arena->extent_grow_mtx);
1397
1398 extent_t *extent = extent_recycle(tsdn, arena, r_extent_hooks,
1399 &arena->extents_retained, new_addr, size, pad, alignment, slab,
1400 szind, zero, commit, true);
1401 if (extent != NULL) {
1402 malloc_mutex_unlock(tsdn, &arena->extent_grow_mtx);
1403 if (config_prof) {
1404 extent_gdump_add(tsdn, extent);
1405 }
1406 } else if (opt_retain && new_addr == NULL) {
1407 extent = extent_grow_retained(tsdn, arena, r_extent_hooks, size,
1408 pad, alignment, slab, szind, zero, commit);
1409 /* extent_grow_retained() always releases extent_grow_mtx. */
1410 } else {
1411 malloc_mutex_unlock(tsdn, &arena->extent_grow_mtx);
1412 }
1413 malloc_mutex_assert_not_owner(tsdn, &arena->extent_grow_mtx);
1414
1415 return extent;
1416}
1417
1418static extent_t *
1419extent_alloc_wrapper_hard(tsdn_t *tsdn, arena_t *arena,

Callers 1

extent_alloc_wrapperFunction · 0.85

Calls 6

malloc_mutex_lockFunction · 0.85
extent_recycleFunction · 0.85
malloc_mutex_unlockFunction · 0.85
extent_gdump_addFunction · 0.85
extent_grow_retainedFunction · 0.85

Tested by

no test coverage detected