On Tue, 8 Apr 2025 11:33:54 GMT, Per Minborg <[email protected]> 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