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
8258961: move some fields of SafePointNode from public to protected #1899
Conversation
|
@navyxliu |
Webrevs
|
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.
Also update last copyright year in changed files.
devirtualize SafePointNode::jvms(). We can't hide the member variable _jvms because it is exposed to HotSpot Servicability agent. keeping the qualifier const for the same resaon.
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.
@navyxliu 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 222 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. 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, @vnkozlov) but any other Committer may sponsor as well.
|
I investigate the 3 failures on x86 host. they have been fixed in JDK-8258703 (committed yesterday). |
/integrate |
/sponsor |
@TobiHartmann This PR has not yet been marked as ready for integration. |
@navyxliu There is a title mismatch between the PR and the JBS issue that you need to fix before integration. |
Yes, I did modify the JBS title. I found it's hard to hide out _jvms because offset_of(klass, field) needs to access the field. I plan to see if we can use template metaprogramming or constexpr to workaround it(https://gist.github.com/graphitemaster/494f21190bb2c63c5516). I will file a separate issue if I figure out how. |
I found Node::jvms() is virtual, so it's useless to remove keyword "virtual" in SafePointNode::jvms(). I need another revision to fix it. Paul asked me to hide away those public fields into protected. I discover a straightforward solution -- just declare friend class VMStructs. Other classes do that. |
remove the virtual qualifier from Node::jvms(). check its type is SafePointNode and MachSafePointNode instead. This patch also move some fiels to proctected zone and declare VMStructs is a friend.
revert code change to devirtualize Node::jvms(). There are 3 nodes override jvms() -- SafePointNode, MachSafePointNode and MachHalt. It does not make sense to devirtualize it because we have to do non-trivial dispatch based on types in Node::jvms(). It is not worth it.
I took back the devirtual attempt because it's not worth it. there're 3 nodes override Node::jvms().
|
/integrate |
hello, @TobiHartmann , |
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.
Looks reasonable to me but @vnkozlov should also review this again.
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.
Looks good.
Latest version passed hs-tier1-3 testing.
/sponsor |
@vnkozlov @navyxliu Since your change was applied there have been 222 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit 533a2d3. |
Thanks for all reviewers. |
Declare VMStructs is a friend of SafePointNode so we can move some fields from public zone to protected zone.
Clean up the forward declaration section in callnode.hpp. Lock/Unlock Nodes are subclasses of AbstractLockNode.
/cc hotspot-compiler
Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/1899/head:pull/1899
$ git checkout pull/1899