MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / extent_alloc_retained

Function extent_alloc_retained

deps/jemalloc/src/extent.c:1462–1489  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1460}
1461
1462static extent_t *
1463extent_alloc_retained(tsdn_t *tsdn, arena_t *arena,
1464 extent_hooks_t **r_extent_hooks, void *new_addr, size_t size, size_t pad,
1465 size_t alignment, bool slab, szind_t szind, bool *zero, bool *commit) {
1466 assert(size != 0);
1467 assert(alignment != 0);
1468
1469 malloc_mutex_lock(tsdn, &arena->extent_grow_mtx);
1470
1471 extent_t *extent = extent_recycle(tsdn, arena, r_extent_hooks,
1472 &arena->extents_retained, new_addr, size, pad, alignment, slab,
1473 szind, zero, commit, true);
1474 if (extent != NULL) {
1475 malloc_mutex_unlock(tsdn, &arena->extent_grow_mtx);
1476 if (config_prof) {
1477 extent_gdump_add(tsdn, extent);
1478 }
1479 } else if (opt_retain && new_addr == NULL) {
1480 extent = extent_grow_retained(tsdn, arena, r_extent_hooks, size,
1481 pad, alignment, slab, szind, zero, commit);
1482 /* extent_grow_retained() always releases extent_grow_mtx. */
1483 } else {
1484 malloc_mutex_unlock(tsdn, &arena->extent_grow_mtx);
1485 }
1486 malloc_mutex_assert_not_owner(tsdn, &arena->extent_grow_mtx);
1487
1488 return extent;
1489}
1490
1491static extent_t *
1492extent_alloc_wrapper_hard(tsdn_t *tsdn, arena_t *arena,

Callers 1

extent_alloc_wrapperFunction · 0.70

Calls 6

extent_recycleFunction · 0.70
extent_gdump_addFunction · 0.70
extent_grow_retainedFunction · 0.70
malloc_mutex_lockFunction · 0.50
malloc_mutex_unlockFunction · 0.50

Tested by

no test coverage detected