-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8358339: Handle MethodCounters::_method backlinks after JDK-8355003 #25599
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
Conversation
👋 Welcome back shade! A progress list of the required criteria for merging this PR into |
@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 77 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 |
Actually, I am not sure if it is even a bug, because mainline is using |
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.
I don't think this is the right thing to do, since the Method* is already handled in finalize_oop_references since it's a backpointer.
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.
And MethodCounters shouldn't be inhertited from Metadata, they're inherited from MetaspaceObj in mainline. We want to avoid virtual function pointers in this type.
Sorry, I don't understand this comment. I think there is a symmetry between
Are you, perhaps, looking at older mainline? Because in current mainline
|
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.
Good. This will be needed for AOT caching Level2 C1 compiled nmethods which have profiling: vnkozlov@4659523
Before I proceed anywhere with this, I need to understand what @coleenp saw in all this :) |
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.
My repo was two weeks old so I didn't see this change to give MethodCounters a vptr, and don't know why. At worst the backpointer to Method* in MethodCounters is redundant with the Method* that you're creating the oop_references for, but it shouldn't create two oops.
ie, md == ((MethodCounter*)m)->method();
But maybe that's not the case here.
OK, phew. I thought I am not seeing some huge gap here. Thanks! |
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.
Sure why not, we'll eventually need it.
Cool, here goes. /integrate |
Going to push as commit 3cf3e4b.
Your commit was automatically rebased without conflicts. |
Found this when reading mainline-vs-premain webrev. JDK-8355003 introduced a backlink to
Method*
inMethodCounters
. I believe we need to handle that backlink at least inCodeBuffer::finalize_oop_references()
. premain does this, while mainline does not. Also, amusingly, we haveMethodCounters::is_methodCounters
, but not the super-classMetadata::is_methodCounters
.I pulled in the hunks that use
is_methodCounters()
andMethodCounters::method()
from premain into this PR.Additional testing:
runtime/cds
tier1
all
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/25599/head:pull/25599
$ git checkout pull/25599
Update a local copy of the PR:
$ git checkout pull/25599
$ git pull https://git.openjdk.org/jdk.git pull/25599/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 25599
View PR using the GUI difftool:
$ git pr show -t 25599
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/25599.diff
Using Webrev
Link to Webrev Comment