RFR: 8349146: [REDO] Implement a better allocator for downcalls [v7]

Per Minborg pminborg at openjdk.org
Fri May 2 10:43:46 UTC 2025


On Fri, 2 May 2025 10:40:04 GMT, Per Minborg <pminborg at openjdk.org> wrote:

>> This PR is based on the work of @mernst-github and aims to implement an _internal_ thread-local 'stack' allocator, which works like a dynamically sized arena, but with reset functionality to reset the allocated size back to a certain level. The underlying memory could stay around between calls, which could improve performance.
>> 
>> Re-allocated segments are not zeroed between allocations.
>
> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Address comments

Updated benchmarks:


Benchmark                            (ELEM_SIZE)  Mode  Cnt   Score   Error  Units
BufferStackBench.OfVirtual.buffer              8  avgt   15  12.695 ± 0.205  ns/op
BufferStackBench.OfVirtual.buffer             16  avgt   15  12.622 ± 0.078  ns/op
BufferStackBench.OfVirtual.buffer             32  avgt   15  12.523 ± 0.022  ns/op
BufferStackBench.OfVirtual.confined            8  avgt   15  22.902 ± 0.407  ns/op
BufferStackBench.OfVirtual.confined           16  avgt   15  23.858 ± 0.652  ns/op
BufferStackBench.OfVirtual.confined           32  avgt   15  25.544 ± 0.458  ns/op
BufferStackBench.buffer                        8  avgt   15   4.923 ± 0.029  ns/op
BufferStackBench.buffer                       16  avgt   15   4.971 ± 0.095  ns/op
BufferStackBench.buffer                       32  avgt   15   4.980 ± 0.105  ns/op
BufferStackBench.confined                      8  avgt   15  22.713 ± 0.289  ns/op
BufferStackBench.confined                     16  avgt   15  23.576 ± 0.348  ns/op
BufferStackBench.confined                     32  avgt   15  25.272 ± 0.530  ns/op


and


vBenchmark                              Mode  Cnt   Score   Error  Units
CallOverheadByValue.OfVirtual.byPtr    avgt   15   4.159 ± 0.097  ns/op
CallOverheadByValue.OfVirtual.byValue  avgt   15  16.535 ± 0.433  ns/op
CallOverheadByValue.byPtr              avgt   15   4.119 ± 0.031  ns/op
CallOverheadByValue.byValue            avgt   15  11.404 ± 0.240  ns/op

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

PR Comment: https://git.openjdk.org/jdk/pull/24829#issuecomment-2846906803


More information about the core-libs-dev mailing list