[jdk17] Integrated: 8268362: [REDO] C2 crash when compile negative Arrays.copyOf length after loop
Hui Shi
hshi at openjdk.java.net
Mon Jun 21 12:02:32 UTC 2021
On Tue, 15 Jun 2021 02:08:30 GMT, Hui Shi <hshi at openjdk.org> wrote:
> This redos PR https://github.com/openjdk/jdk/pull/4238
>
> Some closed tests fail due to original PR, the main reasons are:
>
> 8268325/8268345
> CastIINode created in AllocateArrayNode::make_ideal_length apply on a negative array length. GVN transform converts these CastIINode to top. This breaks assumptions, eg., array index node type is TypeInt.
> 8268345
> Some CastIINode is created in LoadRange::Ideal, which doesn't apply GVN transform. CastIINode can not be found in GVN hashtable and cause assertion failure.
> Based on previous PR #4238, this PR unifies CastIINode processing post AllocateArrayNode::make_ideal_length. Setup type and add into igvn worklist. Avoid apply GVN transform to break different assumptions in parser.
>
> Based on closed test failrue message, two new tests are added
>
> TestNegArrayLengthAsIndex1 : fail in debug build even without previous PR #4238, it loads a negative array length and apply GVN transform (In GraphKit::load_array_length) which covert length to top node. It also assert in Parse::array_addressing.
>
> TestNegArrayLengthAsIndex2 : similar with failrue in https://bugs.openjdk.java.net/browse/JDK-8268301
This pull request has now been integrated.
Changeset: 22ebd192
Author: Hui Shi <hshi at openjdk.org>
URL: https://git.openjdk.java.net/jdk17/commit/22ebd1926d4510cbe40cb186edf16cbd44a29347
Stats: 240 lines in 7 files changed: 224 ins; 13 del; 3 mod
8268362: [REDO] C2 crash when compile negative Arrays.copyOf length after loop
Reviewed-by: kvn, roland
-------------
PR: https://git.openjdk.java.net/jdk17/pull/49
More information about the hotspot-compiler-dev
mailing list