Integrated: 8272873: C2: Inlining should not depend on absolute call site counts

Igor Veresov iveresov at openjdk.java.net
Thu Aug 26 00:20:31 UTC 2021


On Tue, 24 Aug 2021 15:44:41 GMT, Igor Veresov <iveresov at openjdk.org> wrote:

> C2 considers absolute call site counts in its inlining decisions, which seems very wrong considering the asynchronous nature of profiling and background compilation (See InlineTree::should_inline()). It causes substantial over-inlining, which in presence of a depth-first inlining can lead to an early cut off. It also is inherently unstable. C2 already uses call frequency as an additional factor and it's better to consider only that in the inlining heuristic. I did extensive benchmarking it yielded almost no losses and single-digit wins (up to 5%) on some benchmarks. I think it's safe to remove/deprecate InlineFrequencyCount and continue using InlineFrequencyRatio instead. I found that converting the frequency computation to FP and setting InlineFrequencyRatio=0.25 (inline a method that is called a least 25% of the time) works best.

This pull request has now been integrated.

Changeset: 673ce7ef
Author:    Igor Veresov <iveresov at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/673ce7efa56e7eb54266af6fe795d46d57f51bdc
Stats:     18 lines in 10 files changed: 1 ins; 13 del; 4 mod

8272873: C2: Inlining should not depend on absolute call site counts

Reviewed-by: kvn, vlivanov, dlong

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

PR: https://git.openjdk.java.net/jdk/pull/5238


More information about the hotspot-compiler-dev mailing list