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;
|
||||
}
|
||||
|
||||
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) {
|
||||
mi_atomic_or_acq_rel(&segment->free_space_mask, free_space_mask);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue