RFR: 8303951: Add asserts before record_method_not_compilable where possible

Emanuel Peter epeter at openjdk.org
Mon Mar 20 13:48:05 UTC 2023


On Fri, 17 Mar 2023 15:55:02 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

>> I went through all `C2` bailouts, and checked if they are justified to bail out of compilation silently. I added asserts everywhere. Those that were hit, I inspected by hand.
>> 
>> Some of them seem to be justified. There I added comments why they are justified. They are cases that we do not want to handle in `C2`, and that are rare enough so that it probably does not matter.
>> 
>> For the following bailouts I did not add an assert, because it may have revealed a bug:
>> [JDK-8304328](https://bugs.openjdk.org/browse/JDK-8304328) C2 Bailout "failed spill-split-recycle sanity check" reveals hidden issue with RA
>> 
>> Note:
>> [JDK-8303466](https://bugs.openjdk.org/browse/JDK-8303466) C2: COMPILE SKIPPED: malformed control flow - only one IfProj
>> That bug bug was the reason for this RFE here. I added the assert for "malformed control flow". After this RFE here, that Bug will run into the assert on debug builds.
>> 
>> I ran `tier1-6` and stress testing. Now running `tier7-9`.
>> 
>> Filed a follow-up RFE to do the same for `BAILOUT` in `C1`: [JDK-8304532](https://bugs.openjdk.org/browse/JDK-8304532).
>
> src/hotspot/share/opto/compile.cpp line 757:
> 
>> 755:     if (cg == nullptr) {
>> 756:       const char* reason = InlineTree::check_can_parse(method());
>> 757:       assert(reason != nullptr, "cannot parse method: why?");
> 
> Add `reason` to assert's message.

`reason` is `nullptr` when the asser fails. I now say `expect reason for parse failure`.

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

PR: https://git.openjdk.org/jdk/pull/13038


More information about the hotspot-compiler-dev mailing list