Integrated: 8377011: Shenandoah: assert_bounds should be only called when boundaries have changed
Xiaolong Peng
xpeng at openjdk.org
Thu Feb 26 00:28:09 UTC 2026
On Tue, 3 Feb 2026 00:29:30 GMT, Xiaolong Peng <xpeng at openjdk.org> wrote:
> This fix the problem causing following 3 jtreg tests with tlab disabled to fail:
>
> gc/shenandoah/TestRetainObjects.java#no-tlab 8361099 generic-all
> gc/shenandoah/TestSieveObjects.java#no-tlab 8361099 generic-all
> gc/shenandoah/TestSieveObjects.java#no-tlab-genshen 8361099 generic-all
>
>
>
> The problem is assert_bounds is always called from function ShenandoahFreeSet::try_allocate_in, no matter the boundaries have changed or not after the allocation, this is new behavior introduced by https://bugs.openjdk.org/browse/JDK-8365880, before which assert_bounds was only called after retiring a region.
>
> The fix is to call assert_bounds only when boundaries have changed:
> 1. When retire a region;
> 2. When a the object is allocated in a new region - one region became non-empty.
>
> There is also minor improvement to the if-else code in the PR.
>
> Overall the change should be safe and only affect Shenandoah related tests, I have run Shenandoah test suite on MacOS.
>
> Profiler data from the problematic jtreg test: [jtreg-gc_shenandoah_TestRetainObjects_no_tlab.html](https://github.com/user-attachments/files/25027324/jtreg-gc_shenandoah_TestRetainObjects_no_tlab.html)
>
> ### Tests
> - [x] hotspot_gc_shenandoah
> - [x] GHA
This pull request has now been integrated.
Changeset: abec2124
Author: Xiaolong Peng <xpeng at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/abec2124281bd9ffb3c3126b66b7b45dc4d88a79
Stats: 37 lines in 3 files changed: 28 ins; 8 del; 1 mod
8377011: Shenandoah: assert_bounds should be only called when boundaries have changed
Reviewed-by: wkemper, kdnilsen
-------------
PR: https://git.openjdk.org/jdk/pull/29537
More information about the shenandoah-dev
mailing list