Cache extra extents in the dirty pool from ecache_alloc_grow

This commit is contained in:
Guangli Dai 2025-01-27 23:09:51 -08:00
parent a0d18fe5d7
commit d815308e03
3 changed files with 88 additions and 12 deletions

View file

@ -310,6 +310,17 @@ sz_size2index_usize_fastpath(size_t size, szind_t *ind, size_t *usize) {
}
}
JEMALLOC_ALWAYS_INLINE size_t
sz_s2u_size_class_compute(size_t size) {
size_t x = lg_floor((size<<1)-1);
size_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1)
? LG_QUANTUM : x - SC_LG_NGROUP - 1;
size_t delta = ZU(1) << lg_delta;
size_t delta_mask = delta - 1;
size_t usize = (size + delta_mask) & ~delta_mask;
return usize;
}
JEMALLOC_ALWAYS_INLINE size_t
sz_s2u_compute(size_t size) {
if (unlikely(size > SC_LARGE_MAXCLASS)) {
@ -328,13 +339,7 @@ sz_s2u_compute(size_t size) {
}
#endif
if (!sz_limit_usize_gap_enabled() || size <= SC_SMALL_MAXCLASS) {
size_t x = lg_floor((size<<1)-1);
size_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1)
? LG_QUANTUM : x - SC_LG_NGROUP - 1;
size_t delta = ZU(1) << lg_delta;
size_t delta_mask = delta - 1;
size_t usize = (size + delta_mask) & ~delta_mask;
return usize;
return sz_s2u_size_class_compute(size);
} else {
size_t usize = ((size + PAGE - 1) >> LG_PAGE) << LG_PAGE;
assert(usize - size < PAGE);