Integrated: 8263227: C2: inconsistent spilling due to dead nodes in exception block

Roberto Castañeda Lozano rcastanedalo at openjdk.java.net
Tue Apr 20 10:10:10 UTC 2021


On Thu, 1 Apr 2021 10:02:39 GMT, Roberto Castañeda Lozano <rcastanedalo at openjdk.org> wrote:

> This change eliminates dead multi-nodes created by call-catch cleanup after GCM. Eliminating all dead code created by call-catch cleanup avoids potential issues when splitting the live range of call result values, see the analysis in the [bug report](https://bugs.openjdk.java.net/browse/JDK-8263227) for details. This solution is the least invasive of the three alternatives proposed in the bug report (the other two are constraining global code motion and extending live-range splitting).
> 
> The change also extends the control-flow graph verification pass to catch similar live-range splitting issues earlier (with `+VerifyRegisterAllocator`).
> 
> Tested on:
> - original bug reproducer
> - hs-tier1-5 (windows-x64, linux-x64, linux-aarch64, and macosx-x64) with `+VerifyRegisterAllocator`
> - hs-tier1-3 (windows-x64, linux-x64, linux-aarch64, and macosx-x64) with `+VerifyRegisterAllocator` and `+StressGCM` (5 repetitions)

This pull request has now been integrated.

Changeset: d81b0461
Author:    Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/d81b0461
Stats:     115 lines in 4 files changed: 107 ins; 0 del; 8 mod

8263227: C2: inconsistent spilling due to dead nodes in exception block

Eliminate dead nodes created by call-catch cleanup even if they have multiple
projections. Assert that definitions dominate uses and projections are scheduled
next to their parent nodes.

Reviewed-by: neliasso, kvn

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

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


More information about the hotspot-compiler-dev mailing list