mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-05-30 00:27:30 +03:00
Remove fresh-slab batch fill
This commit is contained in:
parent
c5a1822d69
commit
44c2ffaff6
2 changed files with 0 additions and 72 deletions
|
|
@ -106,8 +106,6 @@ arena_t *arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config);
|
|||
bool arena_init_huge(tsdn_t *tsdn, arena_t *a0);
|
||||
bool arena_ind_is_huge(unsigned ind);
|
||||
arena_t *arena_choose_huge(tsd_t *tsd);
|
||||
size_t arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind,
|
||||
void **ptrs, size_t nfill, bool zero);
|
||||
bool arena_boot(sc_data_t *sc_data, base_t *base, bool hpa);
|
||||
void *arena_locality_hint(tsdn_t *tsdn, arena_t *arena, szind_t szind);
|
||||
void arena_cache_bin_array_register(tsdn_t *tsdn, arena_t *arena,
|
||||
|
|
|
|||
70
src/arena.c
70
src/arena.c
|
|
@ -1084,76 +1084,6 @@ label_refill:
|
|||
return filled;
|
||||
}
|
||||
|
||||
size_t
|
||||
arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind,
|
||||
void **ptrs, size_t nfill, bool zero) {
|
||||
assert(binind < SC_NBINS);
|
||||
const bin_info_t *bin_info = &bin_infos[binind];
|
||||
const size_t nregs = bin_info->nregs;
|
||||
assert(nregs > 0);
|
||||
const size_t usize = bin_info->reg_size;
|
||||
|
||||
const bool manual_arena = !arena_is_auto(arena);
|
||||
unsigned binshard;
|
||||
bin_t *bin = bin_choose(tsdn, arena, binind, &binshard);
|
||||
|
||||
size_t nslab = 0;
|
||||
size_t filled = 0;
|
||||
edata_t *slab = NULL;
|
||||
edata_list_active_t fulls;
|
||||
edata_list_active_init(&fulls);
|
||||
|
||||
while (filled < nfill
|
||||
&& (slab = arena_slab_alloc(
|
||||
tsdn, arena, binind, binshard, bin_info))
|
||||
!= NULL) {
|
||||
assert((size_t)edata_nfree_get(slab) == nregs);
|
||||
++nslab;
|
||||
size_t batch = nfill - filled;
|
||||
if (batch > nregs) {
|
||||
batch = nregs;
|
||||
}
|
||||
assert(batch > 0);
|
||||
bin_slab_reg_alloc_batch(
|
||||
slab, bin_info, (unsigned)batch, &ptrs[filled]);
|
||||
assert(edata_addr_get(slab) == ptrs[filled]);
|
||||
if (zero) {
|
||||
memset(ptrs[filled], 0, batch * usize);
|
||||
}
|
||||
filled += batch;
|
||||
if (batch == nregs) {
|
||||
if (manual_arena) {
|
||||
edata_list_active_append(&fulls, slab);
|
||||
}
|
||||
slab = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
malloc_mutex_lock(tsdn, &bin->lock);
|
||||
/*
|
||||
* Only the last slab can be non-empty, and the last slab is non-empty
|
||||
* iff slab != NULL.
|
||||
*/
|
||||
if (slab != NULL) {
|
||||
bin_lower_slab(tsdn, !manual_arena, slab, bin);
|
||||
}
|
||||
if (manual_arena) {
|
||||
edata_list_active_concat(&bin->slabs_full, &fulls);
|
||||
}
|
||||
assert(edata_list_active_empty(&fulls));
|
||||
if (config_stats) {
|
||||
bin->stats.nslabs += nslab;
|
||||
bin->stats.curslabs += nslab;
|
||||
bin->stats.nmalloc += filled;
|
||||
bin->stats.nrequests += filled;
|
||||
bin->stats.curregs += filled;
|
||||
}
|
||||
malloc_mutex_unlock(tsdn, &bin->lock);
|
||||
|
||||
arena_decay_tick(tsdn, arena);
|
||||
return filled;
|
||||
}
|
||||
|
||||
static void *
|
||||
arena_malloc_small(tsdn_t *tsdn, arena_t *arena, szind_t binind, bool zero) {
|
||||
assert(binind < SC_NBINS);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue