Integrated: 8329570: G1: Excessive is_obj_dead_cond calls in verification

Stefan Karlsson stefank at openjdk.org
Fri Apr 5 12:03:13 UTC 2024


On Wed, 3 Apr 2024 08:53:18 GMT, Stefan Karlsson <stefank at openjdk.org> wrote:

> While investigating [JDK-8329314](https://bugs.openjdk.org/browse/JDK-8329314) it was found that G1 was slower than Parallel when allocating objects because of the extra verification when running with fastdebug builds.
> 
> This tiny tests takes 30s with G1:
> 
> public class Test {
>     static int n = 847734685;
> 
>     public static void main(String[] args) {
>          String[] strs = new String[n + 1];
>     }
> }
> 
> 
> A large portion of that time is spent inside this assert:
> 
>     assert(!G1CollectedHeap::heap()->is_obj_dead_cond(_containing_obj, _vo), "Precondition");
> 
> which is called for every single oop in the _containing_obj. If I move this assert to where _containing_obj is initialized, the test now completes in 4-5 seconds. I propose that we make this tiny change to improve the speed of the debug builds.

This pull request has now been integrated.

Changeset: 29992e1f
Author:    Stefan Karlsson <stefank at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/29992e1fca4faef0fe0ac453c7e78db4628d5e70
Stats:     2 lines in 1 file changed: 1 ins; 1 del; 0 mod

8329570: G1: Excessive is_obj_dead_cond calls in verification

Reviewed-by: aboldtch, shade, tschatzl, gli

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

PR: https://git.openjdk.org/jdk/pull/18595


More information about the hotspot-gc-dev mailing list