From 47edd8bd8108c4c39f97542625b9fa38b00b7ea5 Mon Sep 17 00:00:00 2001 From: Sergiy Kuryata Date: Tue, 10 Dec 2024 13:34:23 -0800 Subject: [PATCH] Clear out small object free space in large segments --- src/segment.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/segment.c b/src/segment.c index 204a9002..d3469cb8 100644 --- a/src/segment.c +++ b/src/segment.c @@ -1319,6 +1319,10 @@ static void mi_segment_abandon(mi_segment_t* segment, mi_segments_tld_t* tld) { tld->medium_segment = NULL; } else if (segment == tld->large_segment) { + // Clear out small object free space in large segments + free_space_mask = mi_free_space_mask_from_blocksize(MI_SMALL_OBJ_SIZE_MAX); + free_space_mask = free_space_mask | (free_space_mask - 1); + mi_atomic_and_acq_rel(&segment->free_space_mask, ~free_space_mask); tld->large_segment = NULL; } _mi_arena_segment_mark_abandoned(segment);