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
