[jdk17] RFR: 8268884: C2: Change to meet_speculative in phase CCP assert [v2]
Nils Eliasson
neliasso at openjdk.java.net
Tue Jun 29 12:03:35 UTC 2021
> Hi,
>
> The test fails on "assert(t->meet(t0) == t) failed: Not monotonic" in PhaseCCP for a CheckCastPPNode. The test is really simple. The CheckCastPP is hanging of the ParmNode for the 'this' pointer. The user of this is a call, with an infinite empty loop, that gets inlined. The loop will have a safepoint that keeps the JVM State - the CheckCastPP is kept alive by that SafePointNode.
>
> The assert triggers because the type for the CheckCastPP has a speculative part. In the assert "assert(t->meet(t0) == t) failed: Not monotonic" - t is the type evaluated for the CheckCastPP, t0 is the previous type (from _types map), which has not been updated yet and is still Type::Top.
>
> t->meet(t0) will drop the speculative part and fail the comparison.
>
> Suggested fix - change meet to meet_specualtive that will keep the speculative part.
>
> Please review,
> Best regards,
> Nils Eliasson
Nils Eliasson has updated the pull request incrementally with two additional commits since the last revision:
- Revert meet change
- Remove speculative types from top to bottom
-------------
Changes:
- all: https://git.openjdk.java.net/jdk17/pull/170/files
- new: https://git.openjdk.java.net/jdk17/pull/170/files/974edf76..eaa80ffa
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk17&pr=170&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk17&pr=170&range=00-01
Stats: 11 lines in 2 files changed: 2 ins; 0 del; 9 mod
Patch: https://git.openjdk.java.net/jdk17/pull/170.diff
Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/170/head:pull/170
PR: https://git.openjdk.java.net/jdk17/pull/170
More information about the hotspot-compiler-dev
mailing list