RFR: 8263448: CTW: fatal error: meet not symmetric
Vladimir Kozlov
kvn at openjdk.java.net
Wed Mar 31 23:38:33 UTC 2021
In bug's case instance_id should be changed to InstanceBot only if it is real id and not InstanceTop or InstanceBot (similar to Constant in type lattice). Otherwise we incorrectly change InstanceTop to InstanceBot. In short, we should follow PTR transformation in this code:
if (ptr == Constant) {
ptr = NotNull;
}
- instance_id = InstanceBot;
+ if (instance_id > 0) {
+ instance_id = InstanceBot;
+ }
I noticed that `TypeInstPtr::xmeet_helper()` has the same code as `TypeAryPtr::xmeet_helper()` for case when `InstPtr` meets `AryPtr`. So instead of fixing two places I decided to call TypeAryPtr::xmeet_helper() from `TypeInstPtr::xmeet_helper()` for this case. We do similar thing in `TypeOopPtr::xmeet()`:
https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/type.cpp#L3283
Fixed code style in touched code.
Tested failing test from bug report, hs-tier1-4, hs-comp.
-------------
Commit messages:
- 8263448: CTW: fatal error: meet not symmetric
Changes: https://git.openjdk.java.net/jdk/pull/3298/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3298&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8263448
Stats: 67 lines in 1 file changed: 9 ins; 42 del; 16 mod
Patch: https://git.openjdk.java.net/jdk/pull/3298.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3298/head:pull/3298
PR: https://git.openjdk.java.net/jdk/pull/3298
More information about the hotspot-compiler-dev
mailing list