On Thu, 17 Sep 2026 10:50:00 GMT, Per Minborg <[email protected]> wrote:

> This PR proposes removing the entire internal `BufferStack` and associated 
> classes and tests. Instead, we can now simply rely on a `Arena.ofConfined` 
> which will provide pooling for us automatically.
> 
> If integrated, this PR would imply:
> 1,511 lines removed net across 13 files compared with master:
> - 602 production-source lines
> - 909 test and benchmark lines
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Base:


Benchmark                                                 Mode  Cnt     Score   
 Error   Units
CallOverheadByValue.OfVirtual.byPtr                       avgt   50     2.241 ± 
 0.010   ns/op
CallOverheadByValue.OfVirtual.byPtr:gc.alloc.rate         avgt   50     0.006 ± 
 0.001  MB/sec
CallOverheadByValue.OfVirtual.byPtr:gc.alloc.rate.norm    avgt   50    ≈ 10⁻⁵   
          B/op
CallOverheadByValue.OfVirtual.byPtr:gc.count              avgt   50       ≈ 0   
        counts
CallOverheadByValue.OfVirtual.byValue                     avgt   50    11.530 ± 
 0.182   ns/op
CallOverheadByValue.OfVirtual.byValue:gc.alloc.rate       avgt   50  5297.851 ± 
81.966  MB/sec
CallOverheadByValue.OfVirtual.byValue:gc.alloc.rate.norm  avgt   50    64.000 ± 
 0.001    B/op
CallOverheadByValue.OfVirtual.byValue:gc.count            avgt   50   734.000   
        counts
CallOverheadByValue.OfVirtual.byValue:gc.time             avgt   50   339.000   
            ms
CallOverheadByValue.byPtr                                 avgt   50     2.239 ± 
 0.006   ns/op
CallOverheadByValue.byPtr:gc.alloc.rate                   avgt   50     0.006 ± 
 0.001  MB/sec
CallOverheadByValue.byPtr:gc.alloc.rate.norm              avgt   50    ≈ 10⁻⁵   
          B/op
CallOverheadByValue.byPtr:gc.count                        avgt   50       ≈ 0   
        counts
CallOverheadByValue.byValue                               avgt   50     5.468 ± 
 0.042   ns/op
CallOverheadByValue.byValue:gc.alloc.rate                 avgt   50     0.006 ± 
 0.001  MB/sec
CallOverheadByValue.byValue:gc.alloc.rate.norm            avgt   50    ≈ 10⁻⁴   
          B/op
CallOverheadByValue.byValue:gc.count                      avgt   50       ≈ 0   
        counts


Patch:


Benchmark                                                 Mode  Cnt   Score    
Error   Units
CallOverheadByValue.OfVirtual.byPtr                       avgt   50   2.263 ±  
0.024   ns/op
CallOverheadByValue.OfVirtual.byPtr:gc.alloc.rate         avgt   50   0.006 ±  
0.001  MB/sec
CallOverheadByValue.OfVirtual.byPtr:gc.alloc.rate.norm    avgt   50  ≈ 10⁻⁵     
        B/op
CallOverheadByValue.OfVirtual.byPtr:gc.count              avgt   50     ≈ 0     
      counts
CallOverheadByValue.OfVirtual.byValue                     avgt   50   5.656 ±  
0.134   ns/op <-- 2x Faster
CallOverheadByValue.OfVirtual.byValue:gc.alloc.rate       avgt   50   0.067 ±  
0.103  MB/sec
CallOverheadByValue.OfVirtual.byValue:gc.alloc.rate.norm  avgt   50  ≈ 10⁻³     
        B/op
CallOverheadByValue.OfVirtual.byValue:gc.count            avgt   50     ≈ 0     
      counts
CallOverheadByValue.byPtr                                 avgt   50   2.256 ±  
0.013   ns/op
CallOverheadByValue.byPtr:gc.alloc.rate                   avgt   50   0.006 ±  
0.001  MB/sec
CallOverheadByValue.byPtr:gc.alloc.rate.norm              avgt   50  ≈ 10⁻⁵     
        B/op
CallOverheadByValue.byPtr:gc.count                        avgt   50     ≈ 0     
      counts
CallOverheadByValue.byValue                               avgt   50   4.877 ±  
0.063   ns/op <-- 10% Faster
CallOverheadByValue.byValue:gc.alloc.rate                 avgt   50   0.006 ±  
0.001  MB/sec
CallOverheadByValue.byValue:gc.alloc.rate.norm            avgt   50  ≈ 10⁻⁵     
        B/op
CallOverheadByValue.byValue:gc.count                      avgt   50     ≈ 0     
      counts

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

PR Comment: https://git.openjdk.org/jdk/pull/32924#issuecomment-5713758537

Reply via email to