RFR: 8250597: G1: Improve inlining around trim_queue

Thomas Schatzl thomas.schatzl at oracle.com
Thu Aug 6 13:44:11 UTC 2020

Hi Kim,

On 05.08.20 02:26, Kim Barrett wrote:
> Please review this change to G1ParScanThreadState to improve inlining
> management.  This change doesn't seem to make any measurable performance
> difference by itself.  However, without this, other changes being developed
> may change gcc's inlining decisions in ways that often hurt performance,
> mostly by heuristically cutting off inlining.
> The primary inlining boundary is changed to trim_queue_to_threshold, which
> is the main driver loop for task processing. This is instead of having the
> boundary at copy_to_survivor_space, which is called per-task.
> [...]
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8250597
> Webrev:
> https://cr.openjdk.java.net/~kbarrett/8250597/open.00/
> https://cr.openjdk.java.net/~kbarrett/8250597/open.01/
> https://cr.openjdk.java.net/~kbarrett/8250597/open.01.inc/
> Testing:
> mach5 tier1-5
> various performance tests, finding no significant changes.

   looks good, some suggestions:

- G1ParScanThreadState::do_copy_to_survivor_space: the first assert is 
indented by an extra space.

- maybe the two asserts in G1ParScanThreadState::trim_queue_partially() 
/ G1ParScanThreadState::trim_queue could be moved to 
trim_queue_to_threshold(), checking that the overflow queue is empty, 
and the size is <= the passed threshold.


More information about the hotspot-gc-dev mailing list