Integrated: 8322996: BoxLockNode creation fails with assert(reg < CHUNK_SIZE) failed: sanity

Daniel Lundén dlunden at openjdk.org
Mon Jan 29 09:17:42 UTC 2024


On Thu, 11 Jan 2024 10:19:12 GMT, Daniel Lundén <dlunden at openjdk.org> wrote:

> This changeset fixes an issue where deeply nested synchronized statements triggered an assert in C2.
> 
> Changes:
> - Bail out on compilation when we create a `BoxLockNode` with a slot index that cannot fit in a `RegMask`. This is similar to how we handle the case when we do not have space to represent arguments in [`opto/matcher.cpp`](https://github.com/openjdk/jdk/blob/58b01dce054c50bcb5a28aad4c1b574acaa90f6d/src/hotspot/share/opto/matcher.cpp#L314-L318)
> - Generalize `RegMask::can_represent` to take an additional and optional size argument to facilitate reuse. The default size value, 1, corresponds to the previous functionality. Rewrite `can_represent_arg` to directly call `can_represent(reg, SlotsPerVecZ)`.
> - Add a regression test.
> 
> Testing:
> - [GitHub Actions](https://github.com/dlunde/jdk/actions/runs/7671871191)
> - tier1 to tier5 on windows-x64, linux-x64, linux-aarch64, macosx-x64, and macosx-aarch64.
> - The new regression test in all tier1 to tier10 contexts on windows-x64, linux-x64, linux-aarch64, macosx-x64, and macosx-aarch64.

This pull request has now been integrated.

Changeset: 69586e7b
Author:    Daniel Lundén <dlunden at openjdk.org>
Committer: Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/69586e7bdffe1a840c3a86e6ec83568de24c6fe5
Stats:     266 lines in 6 files changed: 252 ins; 1 del; 13 mod

8322996: BoxLockNode creation fails with assert(reg < CHUNK_SIZE) failed: sanity

Reviewed-by: rcastanedalo, kvn

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

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


More information about the hotspot-compiler-dev mailing list