-
Notifications
You must be signed in to change notification settings - Fork 57
8288303: C1: Miscompilation due to broken Class.getModifiers intrinsic #8
8288303: C1: Miscompilation due to broken Class.getModifiers intrinsic #8
Conversation
👋 Welcome back shade! A progress list of the required criteria for merging this PR into |
Webrevs
|
@shipilev 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 2 new commits pushed to the
Please see this link for an up-to-date comparison between the source branch of this pull request and the ➡️ To integrate this PR with the above commit message to the |
Curiously, I deliberately broke the intrinisic in one of my experiments and realized no test caught it! So I added a test for intrinsic as well... The original patch has the test that exercises the canonicalization path, but not the intrinsification path. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change looks OK. However, it does seem useful for an intrinsic to be able to use "local" labels that won't confuse the register allocator. That seems better than using a less-efficient cmove or having to write the intrinsic at the LIRAssembler level.
Yeah, this is not the first time this happens. So I submitted JDK-8288317 yesterday hoping for better diagnostics, at least. Maybe local labels would be nice to have, if they are implementable. |
Thanks for reviews! /integrate |
Going to push as commit 8cd87e7.
Your commit was automatically rebased without conflicts. |
Looks like another instance when compilicated control flow in C1 LIR intrinsic confuses the C1 regalloc into miscompiling. Reliably reproduces on selected JFR tests in selected configurations, and I was unable to reproduce it in smaller test.
Additional testing:
tier1
tier1
tier2
tier2
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk19 pull/8/head:pull/8
$ git checkout pull/8
Update a local copy of the PR:
$ git checkout pull/8
$ git pull https://git.openjdk.org/jdk19 pull/8/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 8
View PR using the GUI difftool:
$ git pr show -t 8
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk19/pull/8.diff