RFR: 8268362: [REDO] C2 crash when compile negative Arrays.copyOf length after loop
Hui Shi
hshi at openjdk.java.net
Sun Jun 13 12:14:24 UTC 2021
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 https://github.com/openjdk/jdk/pull/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
1. TestNegArrayLengthAsIndex1 : fail in debug build even without previous PR https://github.com/openjdk/jdk/pull/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.
2. TestNegArrayLengthAsIndex2 : similar with failrue in https://bugs.openjdk.java.net/browse/JDK-8268301
-------------
Commit messages:
- 8268362: [REDO] C2 crash when compile negative Arrays.copyOf length after loop
Changes: https://git.openjdk.java.net/jdk/pull/4480/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4480&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8268362
Stats: 210 lines in 6 files changed: 208 ins; 0 del; 2 mod
Patch: https://git.openjdk.java.net/jdk/pull/4480.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4480/head:pull/4480
PR: https://git.openjdk.java.net/jdk/pull/4480
More information about the hotspot-compiler-dev
mailing list