New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8265184: [lworld] [AArch64] Broken fast class init barrier for static calls in c2i adapter #384
Conversation
… calls in c2i adapter The tier1 test runtime/clinit/ClassInitBarrier.java fails on the lworld branch on AArch64. The particular case that fails is calling a static native method `A.staticN()` which should block in the c2i adapter until class A's initialisation is complete but doesn't. The check for a static method is backwards: the class initialisation barrier code is executed when the method is *not* static (ANDS will set the EQ flag if the result is zero). I'm not sure why it's like this but fast class initialisation for AArch64 was added after the original lworld port which also touches generate_i2c2i_adapters so maybe something got messed up in the merge. Fix by making the code the same as mainline.
|
@nick-arm This change now passes all automated pre-integration checks. 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 no new commits pushed to the As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@TobiHartmann) but any other Committer may sponsor as well.
|
Looks good to me! I think the fix for JDK-8230962 broke this.
/integrate |
Thanks for the review @TobiHartmann . Would you mind sponsoring this one and #376 ? |
Sure! /sponsor |
@TobiHartmann @nick-arm Since your change was applied there has been 1 commit pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit 301de8d. |
The tier1 test runtime/clinit/ClassInitBarrier.java fails on the lworld
branch on AArch64. The particular case that fails is calling a static
native method
A.staticN()
which should block in the c2i adapter untilclass A's initialisation is complete but doesn't.
The check for a static method is backwards: the class initialisation
barrier code is executed when the method is not static (ANDS will set
the EQ flag if the result is zero). I'm not sure why it's like this but
fast class initialisation for AArch64 was added after the original
lworld port which also touches generate_i2c2i_adapters so maybe
something got messed up in the merge.
Fix by making the code the same as mainline.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/valhalla pull/384/head:pull/384
$ git checkout pull/384
Update a local copy of the PR:
$ git checkout pull/384
$ git pull https://git.openjdk.java.net/valhalla pull/384/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 384
View PR using the GUI difftool:
$ git pr show -t 384
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/valhalla/pull/384.diff