On Tue, 8 Apr 2025 11:33:54 GMT, Per Minborg <pminb...@openjdk.org> wrote:
>> This PR proposes to add some `@ForceInline` annotations in the `Module` >> class in order to assist inlining of FFM var/method handles. >> >> There are also some changes in other classes which, if implemented, can take >> us three additional levels of inlining. I drew a line there. There is a >> tradeoff with adding `@ForceInline` and just trying to get as deep as >> possible for a specific use case is probably not the best idea. >> >> I have opted not to inline the `j.l.Object` constructor in anticipation of >> broad impact. This currently sets the depth limit for this use case. >> >> Tested and passed tier1-3 > > Per Minborg has updated the pull request with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains nine additional > commits since the last revision: > > - Revert copyright year > - Revert changes to Object > - Merge branch 'master' into module-force-inline > - Add more @ForceInline and a benchmark > - Remove reformatting > - Remove file > - Revert change > - Rename method and variable > - Add @ForceInline annotations and restructure some methods Baseline: Benchmark (offsetCount) (segmentSize) Mode Cnt Score Error Units FFMVarHandleInlineTest.t0_reference 2048 1024 thrpt 25 1552613.262 ? 14295.035 ops/s FFMVarHandleInlineTest.t1_level8 2048 1024 thrpt 25 1558465.228 ? 8458.874 ops/s FFMVarHandleInlineTest.t2_level9 2048 1024 thrpt 25 1542009.100 ? 10240.173 ops/s FFMVarHandleInlineTest.t3_level10 2048 1024 thrpt 25 1553407.503 ? 10834.133 ops/s FFMVarHandleInlineTest.t4_level11 2048 1024 thrpt 25 87666.558 ? 765.848 ops/s. <-- We hit the inline limit here Patch without `Object` changes: Benchmark (offsetCount) (segmentSize) Mode Cnt Score Error Units FFMVarHandleInlineTest.t_level13 2048 1024 thrpt 6 72071.657 ± 1245.304 ops/s FFMVarHandleInlineTest.t_level14 2048 1024 thrpt 6 69263.088 ± 2196.423 ops/s FFMVarHandleInlineTest.t_level15 2048 1024 thrpt 6 3446.827 ± 118.659 **ops/s** Patch with `Object` changes: Benchmark (offsetCount) (segmentSize) Mode Cnt Score Error Units FFMVarHandleInlineTest.t_level11 2048 1024 thrpt 6 1545991.924 ± 21206.450 ops/s FFMVarHandleInlineTest.t_level12 2048 1024 thrpt 6 1542234.193 ± 18002.511 ops/s FFMVarHandleInlineTest.t_level13 2048 1024 thrpt 6 1542601.822 ± 15041.864 ops/s FFMVarHandleInlineTest.t_level14 2048 1024 thrpt 6 179053.325 ± 2496.002 ops/s FFMVarHandleInlineTest.t_level15 2048 1024 thrpt 6 3433.861 ± 165.847 ops/s ------------- PR Comment: https://git.openjdk.org/jdk/pull/23460#issuecomment-2786236800