> 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
Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 33 commits: - Run Lazy test with all flags, Classfile and comment update to ColdStart, other minor cleanup - Merge branch 'master' into lazy-static-varhandle - Mandy suggestions Co-authored-by: Mandy Chung <mandy.ch...@oracle.com> - Comment update from mandy Co-authored-by: Mandy Chung <mandy.ch...@oracle.com> - Add lazy init test for toMethodHandle - Apply suggestions from code review Co-authored-by: Paul Sandoz <paul.d.san...@googlemail.com> - Rollback VHG changes - Split the concepts of asDirect and target - Fix bugs - Merge branch 'master' into lazy-static-varhandle - ... and 23 more: https://git.openjdk.org/jdk/compare/ded13707...6e54b61d ------------- Changes: https://git.openjdk.org/jdk/pull/13821/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13821&range=18 Stats: 796 lines in 10 files changed: 636 ins; 52 del; 108 mod Patch: https://git.openjdk.org/jdk/pull/13821.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/13821/head:pull/13821 PR: https://git.openjdk.org/jdk/pull/13821