diff --git a/src/arena.c b/src/arena.c index fd19e770..c70b1284 100644 --- a/src/arena.c +++ b/src/arena.c @@ -1067,7 +1067,8 @@ arena_prof_promote(tsdn_t *tsdn, void *ptr, size_t usize) { edata_t *edata = emap_edata_lookup(tsdn, &emap_global, ptr); szind_t szind = sz_size2index(usize); - emap_remap(tsdn, &emap_global, edata, szind, false); + edata_szind_set(edata, szind); + emap_remap(tsdn, &emap_global, edata, szind, /* slab */ false); prof_idump_rollback(tsdn, usize); @@ -1079,7 +1080,8 @@ arena_prof_demote(tsdn_t *tsdn, edata_t *edata, const void *ptr) { cassert(config_prof); assert(ptr != NULL); - emap_remap(tsdn, &emap_global, edata, SC_NBINS, false); + edata_szind_set(edata, SC_NBINS); + emap_remap(tsdn, &emap_global, edata, SC_NBINS, /* slab */ false); assert(isalloc(tsdn, ptr) == SC_LARGE_MINCLASS); diff --git a/src/emap.c b/src/emap.c index a227ad10..11e4f4a1 100644 --- a/src/emap.c +++ b/src/emap.c @@ -206,7 +206,6 @@ void emap_remap(tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, bool slab) { EMAP_DECLARE_RTREE_CTX; - edata_szind_set(edata, szind); if (szind != SC_NSIZES) { rtree_szind_slab_update(tsdn, &emap->rtree, rtree_ctx, (uintptr_t)edata_addr_get(edata), szind, slab); diff --git a/src/extent.c b/src/extent.c index 7f2d8833..0d87cffa 100644 --- a/src/extent.c +++ b/src/extent.c @@ -487,6 +487,7 @@ extent_split_interior(tsdn_t *tsdn, pa_shard_t *shard, ehooks_t *ehooks, } if (leadsize == 0 && trailsize == 0) { + edata_szind_set(*edata, szind); emap_remap(tsdn, &emap_global, *edata, szind, slab); } diff --git a/src/pa.c b/src/pa.c index a1063b9e..2809630e 100644 --- a/src/pa.c +++ b/src/pa.c @@ -185,6 +185,7 @@ pa_expand(tsdn_t *tsdn, pa_shard_t *shard, edata_t *edata, size_t old_size, ATOMIC_RELAXED); } pa_nactive_add(shard, expand_amount >> LG_PAGE); + edata_szind_set(edata, szind); emap_remap(tsdn, &emap_global, edata, szind, slab); return false; }