On Wed, 12 Nov 2025 11:19:51 GMT, Maurizio Cimadamore <[email protected]> 
wrote:

> From a logical point of view, what we'd need would be a couple of extra 
> constants:
> 
> * `MIN_ALIGN`, this is the minimum alignment provided by the 
> allocator/OS/platform combo
> * `MAX_ALIGN`, this is the maximum alignment provided by the 
> allocator/OS/platform combo
> 
> Then, we have three cases:
> 
> * if the requested alignment `A` is `A <= MIN_ALIGN`, we can just allocate 
> and don't adjust for alignment

This seems reasonable to me. While the current code's constant is named 
`MAX_MALLOC_ALIGN`, I believe in practice it is really the `MIN_ALIGN` and 
probably should be renamed. It seems to me the current code is written as if it 
is the `MIN_ALIGN`. 

> * if the requested alignment `A` is `MIN_ALIGN < A <= MAX_ALIGN` and the 
> requested size is a multiple of the alignment, also just allocate and don't 
> adjust for alignment

Doesn't this assume that all malloc implementations follow power of 2 pattern 
of arena sizes: 8, 16, 32, 64 and pointer alignments between min and max? 
malloc could also be implemented skipping some of those intermediate sizes. 
e.g. 16, 64, 256.

> * otherwise, allocate a bigger segment and manually align the result

-------------

PR Comment: https://git.openjdk.org/jdk/pull/28235#issuecomment-3522700151

Reply via email to