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

Function extent_alloc_wrapper_hard

deps/memkind/src/jemalloc/src/extent.c:1235–1269  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1233}
1234
1235static extent_t *
1236extent_alloc_wrapper_hard(tsdn_t *tsdn, arena_t *arena,
1237 extent_hooks_t **r_extent_hooks, void *new_addr, size_t size, size_t pad,
1238 size_t alignment, bool slab, szind_t szind, bool *zero, bool *commit) {
1239 size_t esize = size + pad;
1240 extent_t *extent = extent_alloc(tsdn, arena);
1241 if (extent == NULL) {
1242 return NULL;
1243 }
1244 void *addr;
1245 if (*r_extent_hooks == &extent_hooks_default) {
1246 /* Call directly to propagate tsdn. */
1247 addr = extent_alloc_default_impl(tsdn, arena, new_addr, esize,
1248 alignment, zero, commit);
1249 } else {
1250 addr = (*r_extent_hooks)->alloc(*r_extent_hooks, new_addr,
1251 esize, alignment, zero, commit, arena_ind_get(arena));
1252 }
1253 if (addr == NULL) {
1254 extent_dalloc(tsdn, arena, extent);
1255 return NULL;
1256 }
1257 extent_init(extent, arena, addr, esize, slab, szind,
1258 arena_extent_sn_next(arena), extent_state_active, zero, commit);
1259 if (pad != 0) {
1260 extent_addr_randomize(tsdn, extent, alignment);
1261 }
1262 if (extent_register(tsdn, extent)) {
1263 extents_leak(tsdn, arena, r_extent_hooks,
1264 &arena->extents_retained, extent, false);
1265 return NULL;
1266 }
1267
1268 return extent;
1269}
1270
1271extent_t *
1272extent_alloc_wrapper(tsdn_t *tsdn, arena_t *arena,

Callers 1

extent_alloc_wrapperFunction · 0.70

Calls 10

extents_leakFunction · 0.85
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