On Fri, 5 May 2023 04:48:09 GMT, Chen Liang <li...@openjdk.org> wrote:
> This patch implements lazy initialization for VarHandle working on static > fields. It has a good initial call performance. > > We introduce a new internal API, `target()` to unpack a lazy VarHandle in VH > implementation methods. If called via MethodHandle, a barrier is added in the > MethodHandle instead. > > The new test ensures the correctness of Lazy VH for both direct and indirect > invocation; the performance of MethodHandle version of lazy VH is not yet > tested. > > > Benchmark Mode Cnt Score > Error Units > LazyStaticColdStart.methodHandleCreateEager ss 10 41.490 ± > 12.331 us/op > LazyStaticColdStart.methodHandleCreateLazy ss 10 21.810 ± > 16.964 us/op > LazyStaticColdStart.methodHandleInitializeCallEager ss 10 57.860 ± > 13.738 us/op > LazyStaticColdStart.methodHandleInitializeCallLazy ss 10 93.300 ± > 18.858 us/op > LazyStaticColdStart.varHandleCreateEager ss 10 39.860 ± > 9.362 us/op > LazyStaticColdStart.varHandleCreateLazy ss 10 17.630 ± > 1.111 us/op > LazyStaticColdStart.varHandleInitializeCallEager ss 10 123.170 ± > 62.468 us/op > LazyStaticColdStart.varHandleInitializeCallLazy ss 10 105.390 ± > 41.815 us/op This pull request has now been integrated. Changeset: 201e3bcf Author: Chen Liang <li...@openjdk.org> Committer: Mandy Chung <mch...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/201e3bcf52cac64510d50fbdfcd522638d1d0442 Stats: 796 lines in 10 files changed: 636 ins; 52 del; 108 mod 8291065: Creating a VarHandle for a static field triggers class initialization Reviewed-by: mchung, psandoz ------------- PR: https://git.openjdk.org/jdk/pull/13821