mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-25 10:07:36 +03:00
Cache extra extents in the dirty pool from ecache_alloc_grow
This commit is contained in:
parent
a0d18fe5d7
commit
d815308e03
3 changed files with 88 additions and 12 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue