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

Function extent_alloc_wrapper_hard

deps/jemalloc/src/extent.c:1491–1528  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1489}
1490
1491static extent_t *
1492extent_alloc_wrapper_hard(tsdn_t *tsdn, arena_t *arena,
1493 extent_hooks_t **r_extent_hooks, void *new_addr, size_t size, size_t pad,
1494 size_t alignment, bool slab, szind_t szind, bool *zero, bool *commit) {
1495 size_t esize = size + pad;
1496 extent_t *extent = extent_alloc(tsdn, arena);
1497 if (extent == NULL) {
1498 return NULL;
1499 }
1500 void *addr;
1501 size_t palignment = ALIGNMENT_CEILING(alignment, PAGE);
1502 if (*r_extent_hooks == &extent_hooks_default) {
1503 /* Call directly to propagate tsdn. */
1504 addr = extent_alloc_default_impl(tsdn, arena, new_addr, esize,
1505 palignment, zero, commit);
1506 } else {
1507 extent_hook_pre_reentrancy(tsdn, arena);
1508 addr = (*r_extent_hooks)->alloc(*r_extent_hooks, new_addr,
1509 esize, palignment, zero, commit, arena_ind_get(arena));
1510 extent_hook_post_reentrancy(tsdn);
1511 }
1512 if (addr == NULL) {
1513 extent_dalloc(tsdn, arena, extent);
1514 return NULL;
1515 }
1516 extent_init(extent, arena, addr, esize, slab, szind,
1517 arena_extent_sn_next(arena), extent_state_active, *zero, *commit,
1518 true, EXTENT_NOT_HEAD);
1519 if (pad != 0) {
1520 extent_addr_randomize(tsdn, extent, alignment);
1521 }
1522 if (extent_register(tsdn, extent)) {
1523 extent_dalloc(tsdn, arena, extent);
1524 return NULL;
1525 }
1526
1527 return extent;
1528}
1529
1530extent_t *
1531extent_alloc_wrapper(tsdn_t *tsdn, arena_t *arena,

Callers 1

extent_alloc_wrapperFunction · 0.70

Calls 11

allocMethod · 0.80
extent_allocFunction · 0.70
extent_dallocFunction · 0.70
arena_extent_sn_nextFunction · 0.70
extent_registerFunction · 0.70
arena_ind_getFunction · 0.50
extent_initFunction · 0.50
extent_addr_randomizeFunction · 0.50

Tested by

no test coverage detected