On Wed, 24 Jun 2026 10:25:09 GMT, Aleksey Shipilev <[email protected]> wrote:

>> While following up on concurrent marking performance, I noticed that we 
>> stopped / failed to inline some of the hot methods in marking loop. We need 
>> to rework this.
>> 
>> This PR replaces the build-time GCC-specific "bump" for inlining heuristics 
>> into explicit inlining hints across the hot path. I have eyeballed the 
>> profiles on typical workloads and the inlining makes sense now.
>> 
>> Additional testing:
>>  - [x] Linux x86_64 server fastdebug, `hotspot_gc_shenandoah`
>>  - [x] Ad-hoc marking performance tests
>>  - [x] Regular testing pipelines
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Aleksey Shipilev 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 seven additional 
> commits since the last revision:
> 
>  - Keep "inline" on do_chunked_array
>  - Merge branch 'master' into JDK-8385643-shenandoah-rework-mark-inline
>  - Cosmetics
>  - Benchmarks show array path is still important
>  - A few more cosmetics
>  - Touchup
>  - Work

Thanks for looking!

> You might want to drop the `virtual` and make the methods `final` in two 
> cases.

Yes, `virtual` was really to document they "override" the super closure 
methods. We should really just use `override`. Changed as such.
 
> Several definitions still read `inline`. You might either also change them to 
> `ALWAYS_INLINE` for consistency or, even better, drop any `inline` keywords 
> on the definitions - they are redundant. (I know we haven't been consistent 
> about it in the past, but maybe we should start now? ;-) ).

Right, but `inline` for definitions that we carry in `.inline.hpp` are there to 
_also_ exempt them from ODR. The only conditions where we can skip `inline` on 
definition is when they are in `.cpp` OR are templated. So I made a swing in 
two directions: put `inline` where it is missing on non-templated definitions, 
and removed `inline` where they are redundant on templated definitions.

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

PR Comment: https://git.openjdk.org/jdk/pull/31634#issuecomment-4798730614

Reply via email to