8342772: Assert in LateInlineMHCallGenerator::do_late_inline_check#28793
8342772: Assert in LateInlineMHCallGenerator::do_late_inline_check#28793dafedafe wants to merge 4 commits intoopenjdk:masterfrom
Conversation
|
👋 Welcome back dfenacci! A progress list of the required criteria for merging this PR into |
|
@dafedafe This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 119 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
|
Thanks @iwanowww @TobiHartmann @chhagedorn for reviewing! |
|
/integrate |
|
Going to push as commit c1c0ac8.
Your commit was automatically rebased without conflicts. |
|
/backport :jdk26 |
|
@dafedafe the backport was successfully created on the branch backport-dafedafe-c1c0ac87-jdk26 in my personal fork of openjdk/jdk. To create a pull request with this backport targeting openjdk/jdk:jdk26, just click the following link: The title of the pull request is automatically filled in correctly and below you find a suggestion for the pull request body:
If you need to update the source branch of the pull then run the following commands in a local clone of your personal fork of openjdk/jdk: |
Issue
The assertion
jdk/src/hotspot/share/opto/callGenerator.cpp
Line 421 in 1c16d8a
in
LateInlineMHCallGenerator::do_late_inline_checkfails while running a 24h-long Renaissance benchmark test.Cause
The assert failure is due to both
!cg->is_late_inline()andcg->is_mh_late_inline()being false because the CallGeneratorcgis of typeLateInlineVirtualCallGenerator.cgis created just above by callingfor_method_handle_inline. The only way forcgto be of typeLateInlineVirtualCallGeneratoris thatfor_method_handle_inline(which finds out that the intrinsic id isvmIntrinsics::_linkToInterface) callsoptimize_virtual_call, which apparently cannot devirtualize the call, and then callscall_generatorand this creates and returns aLateInlineVirtualCallGenerator(at the end of the method).Fix
There seem to be no apparent reason why the CallGenerator returned by
for_method_handle_inlinecouldn't be of typeLateInlineVirtualCallGenerator. So the sensible fix is to relax the assert to accommodate this type of call generator.Testing
Tier 1-3+
Failing test before and after.
Unfortunately it has proven impractical to create a specific test that consistently (or even only intermittently) reproduces the issue.
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/28793/head:pull/28793$ git checkout pull/28793Update a local copy of the PR:
$ git checkout pull/28793$ git pull https://git.openjdk.org/jdk.git pull/28793/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 28793View PR using the GUI difftool:
$ git pr show -t 28793Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/28793.diff
Using Webrev
Link to Webrev Comment