mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-06 23:39:31 +03:00
Clear out small object free space in large segments Part 2
This commit is contained in:
parent
47edd8bd81
commit
008bec3013
1 changed files with 7 additions and 0 deletions
|
@ -1404,6 +1404,13 @@ static bool mi_segment_check_free(mi_segment_t* segment, size_t slices_needed, s
|
||||||
slice = slice + slice->slice_count;
|
slice = slice + slice->slice_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (segment->page_kind == MI_PAGE_LARGE) {
|
||||||
|
// Clear out small object free space in large segments
|
||||||
|
size_t small_free_space_mask = mi_free_space_mask_from_blocksize(MI_SMALL_OBJ_SIZE_MAX);
|
||||||
|
small_free_space_mask = small_free_space_mask | (small_free_space_mask - 1);
|
||||||
|
free_space_mask &= ~small_free_space_mask;
|
||||||
|
}
|
||||||
|
|
||||||
if (free_space_mask != 0) {
|
if (free_space_mask != 0) {
|
||||||
mi_atomic_or_acq_rel(&segment->free_space_mask, free_space_mask);
|
mi_atomic_or_acq_rel(&segment->free_space_mask, free_space_mask);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue