-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8348239: SA does not know about DeoptimizeObjectsALotThread #23279
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
8348239: SA does not know about DeoptimizeObjectsALotThread #23279
Conversation
|
👋 Welcome back cjplummer! A progress list of the required criteria for merging this PR into |
|
@plummercj 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 63 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 |
|
@plummercj The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
| public boolean isServiceThread() { return false; } | ||
| public boolean isMonitorDeflationThread() { return false; } | ||
| public boolean isAttachListenerThread() { return false; } | ||
| public boolean isDeoptimizeObjectsALotThread() { return false; } |
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.
Is this method used anywhere?
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.
No, but I added it to be consistent with all the other JavaThread subclasses. Actually none of these are used except for isCompilerThread and isCodeCacheSweeperThread. The latter reference is irrelevant since there is no longer a CodeCacheSweeperThread, and the former reference should be replaced with isHiddenFromExternalView(). These are all things documented to fix as part of JDK-8348347, but in the meantime I though it best to be consistent with existing code.
dean-long
left a comment
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.
Overall the changes seem fine, however it would be nice if the vmStructs.cpp registration mechanism was modular and extensible, instead of monolithic. That would make it easier to register private types, or even types outside of libjvm.
I'm not too sure what you are suggesting here. |
dholmes-ora
left a comment
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.
Okay as a quick fix but I look forward to all this going away.
Thanks
| StringDedupThread, AttachListenerThread and ServiceThread. | ||
| The latter seven subclasses of the former. Most operations | ||
| StringDedupThread, AttachListenerThread, DeoptimizeObjectsALotThread and | ||
| ServiceThread. The latter seven subclasses of the former. Most operations |
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 latter eight are subclasses of the former? 8-) Or just "JavaThread, or its subclasses..."
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.
Yes, it should be updated to eight, but I think what would be better is "returns objects of type JavaThraed or one of its subclasses..."
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.
Ok, it's fixed now. I stuck with a somewhat minimal update mostly just to resolve the incorrect count. This comment may have further cleanup as part of JDK-8348347.
For example, instead of a single table, allow multiple tables. They could be registered with with an API similar to JNI RegisterNatives. |
I don't see how that relates to this change. It sounds more like a general suggestion to overhaul of how vmStructs is implemented. |
It relates because if something like that was available then we could register types that are local to a .cpp file without moving them to a .hpp first. |
|
Thanks for the reviews David, Leonid, Dean, and Kevin /integrate |
|
Going to push as commit 21feef3.
Your commit was automatically rebased without conflicts. |
|
@plummercj Pushed as commit 21feef3. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
If you run hotspot with -XX:+DeoptimizeObjectsALot, it will create one or more DeoptimizeObjectsALotThread threads. This is one of many JavaThread subclasses that SA needs to know about, but in this case it does not. When SA tries to create a mirror of one of these threads, it fails with:
The following can be used to reproduce this failure. Most SA tests will fail:
make test TEST=serviceability/sa TEST_VM_OPTS=-XX:+DeoptimizeObjectsALot
I had to move the native DeoptimizeObjectsALotThread declaration to compileBroker.hpp to make it visible to vmStructs.cpp.
I tested with the above "make test" command and ran all svc tier1, tier2, tier3, and tier5 tests.
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/23279/head:pull/23279$ git checkout pull/23279Update a local copy of the PR:
$ git checkout pull/23279$ git pull https://git.openjdk.org/jdk.git pull/23279/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 23279View PR using the GUI difftool:
$ git pr show -t 23279Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/23279.diff
Using Webrev
Link to Webrev Comment