JDK 18 |
---|
18 b21Fixed |
CSR :
|
|
Duplicate :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
Currently the inlining heuristic uses absolute method invocation count to reject methods that are rarely executed (see MinInliningThreshold and its uses). This presents two problems: 1. Method can be rarely used in a particular caller, yet if its total execution count is high it may be still inlined. 2. The use of absolute counts is inherently problematic with the current compilation policy (adaptive threshold and background compilation). It leads to instabilities of inlining decisions. The proposed solution is to consider call site execution ratio in order to reject callees that are rarely executed. Set the old cutoff parameter (MinInliningThreshold) to 0 to essentially disable it and later deprecate it. Setting the introduced MinInlineFrequencyRatio = 0.0085 produces the following notable improvements: Renaissance-Dotty 1.23% Renaissance-Mnemonics 3.88% Renaissance-NaiveBayes 9.23% Renaissance-ScalaKmeans 1.36% SPECjvm2008-Derby 3.16% There are of course some regressions but those are few and on the order of 1.5%
|