[PATCH 2/9] malloc: remove malloc_consolidate
Dev Jain
dev.jain@arm.com
Wed Nov 12 04:01:23 GMT 2025
On 12/11/25 8:55 am, DJ Delorie wrote:
> Dev Jain <dev.jain@arm.com> writes:
>> diff --git a/malloc/malloc.c b/malloc/malloc.c
>>
>> - /* Set if the fastbin chunks contain recently inserted free blocks. */
>> - /* Note this is a bool but not all targets support atomics on booleans. */
>> - int have_fastchunks;
>> -
> Ok.
>
>> set_noncontiguous (av);
>> if (av == &main_arena)
>> set_max_fast (DEFAULT_MXFAST);
>> - atomic_store_relaxed (&av->have_fastchunks, false);
> Ok.
>
>> -static void malloc_consolidate (mstate);
> Ok.
>
>> {
>> idx = largebin_index (nb);
>> - if (atomic_load_relaxed (&av->have_fastchunks))
>> - malloc_consolidate (av);
>> }
> Ok.
>
>>
>> - /* When we are using atomic ops to free fast chunks we can get
>> - here for all block sizes. */
>> - else if (atomic_load_relaxed (&av->have_fastchunks))
>> - {
>> - malloc_consolidate (av);
>> - /* restore original bin index */
>> - if (in_smallbin_range (nb))
>> - idx = smallbin_index (nb);
>> - else
>> - idx = largebin_index (nb);
>> - }
>> -
> Ok.
>
>> free_perturb (chunk2mem(p), size - CHUNK_HDR_SZ);
>>
>> - atomic_store_relaxed (&av->have_fastchunks, true);
> Ok.
>
>> if (size >= FASTBIN_CONSOLIDATION_THRESHOLD)
> I notice that none of these patches remove this macro... Perhaps it
> should be renamed later to better reflect its new purpose (trimming) ?
True, I didn't want to bother reading the trimming code to decide what
to name this to. I'll think about it!
>
>> {
>> - if (atomic_load_relaxed (&av->have_fastchunks))
>> - malloc_consolidate(av);
>> -
> Ok.
>
>> -/*
>> - ------------------------- malloc_consolidate -------------------------
>> -
>> - malloc_consolidate is a specialized version of free() that tears
>> - down chunks held in fastbins. Free itself cannot be used for this
>> - purpose since, among other things, it might place chunks back onto
>> . . .
>> - } while (fb++ != maxfb);
>> -}
>> -
> Ok.
>
>> static int
>> mtrim (mstate av, size_t pad)
>> {
>> - /* Ensure all blocks are consolidated. */
>> - malloc_consolidate (av);
>> -
> Ok.
>
>> - /* We must consolidate main arena before changing max_fast
>> - (see definition of set_max_fast). */
>> - malloc_consolidate (av);
>> -
> Ok.
>
> LGTM
> Reviewed-by: DJ Delorie <dj@redhat.com>
>
More information about the Libc-alpha
mailing list