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

Function arena_slab_alloc

app/redis-6.2.6/deps/jemalloc/src/arena.c:1114–1149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1112}
1113
1114static extent_t *
1115arena_slab_alloc(tsdn_t *tsdn, arena_t *arena, szind_t binind,
1116 const bin_info_t *bin_info) {
1117 witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn),
1118 WITNESS_RANK_CORE, 0);
1119
1120 extent_hooks_t *extent_hooks = EXTENT_HOOKS_INITIALIZER;
1121 szind_t szind = sz_size2index(bin_info->reg_size);
1122 bool zero = false;
1123 bool commit = true;
1124 extent_t *slab = extents_alloc(tsdn, arena, &extent_hooks,
1125 &arena->extents_dirty, NULL, bin_info->slab_size, 0, PAGE, true,
1126 binind, &zero, &commit);
1127 if (slab == NULL) {
1128 slab = extents_alloc(tsdn, arena, &extent_hooks,
1129 &arena->extents_muzzy, NULL, bin_info->slab_size, 0, PAGE,
1130 true, binind, &zero, &commit);
1131 }
1132 if (slab == NULL) {
1133 slab = arena_slab_alloc_hard(tsdn, arena, &extent_hooks,
1134 bin_info, szind);
1135 if (slab == NULL) {
1136 return NULL;
1137 }
1138 }
1139 assert(extent_slab_get(slab));
1140
1141 /* Initialize slab internals. */
1142 arena_slab_data_t *slab_data = extent_slab_data_get(slab);
1143 extent_nfree_set(slab, bin_info->nregs);
1144 bitmap_init(slab_data->bitmap, &bin_info->bitmap_info, false);
1145
1146 arena_nactive_add(arena, extent_size_get(slab) >> LG_PAGE);
1147
1148 return slab;
1149}
1150
1151static extent_t *
1152arena_bin_nonfull_slab_get(tsdn_t *tsdn, arena_t *arena, bin_t *bin,

Callers 1

Calls 10

sz_size2indexFunction · 0.85
extents_allocFunction · 0.85
arena_slab_alloc_hardFunction · 0.85
extent_slab_getFunction · 0.85
extent_slab_data_getFunction · 0.85
extent_nfree_setFunction · 0.85
bitmap_initFunction · 0.85
arena_nactive_addFunction · 0.85
extent_size_getFunction · 0.85

Tested by

no test coverage detected