-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
8274516: [REDO] JDK-8271880: Tighten condition for excluding regions from collecting cards with cross-references #5786
Conversation
…ng regions from collecting cards with cross-references" This reverts commit 1dc8fa9.
👋 Welcome back tschatzl! A progress list of the required criteria for merging this PR into |
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.
Looks good. Just some small comments.
@tschatzl 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 125 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 |
Thanks @albertnetymk @kstefanj for your reviews. /integrate |
Going to push as commit c3b75c6.
Your commit was automatically rebased without conflicts. |
Hi all,
can I have reviews for this redo of (JDK-8271880: Tighten condition for excluding regions from collecting cards with cross-references)[https://bugs.openjdk.java.net/browse/JDK-8271880]?
The JDK-8271180 change has been backed out because it crashed fairly easily on (kitchensink)[https://bugs.openjdk.java.net/browse/JDK-8274340] (and apparently also on some (ArrayJuggle tests)[https://bugs.openjdk.java.net/browse/JDK-8274452]).
The reason is that the original change missed application of the barriers during removal of an element from the discovered list. This change fixes that, properly applying it (calling the
enqueue
methods).This change consist of two commits at this time: first the revert of the backout for JDK-8271180, and a second one with the actual fixes. For people who already looked at the former I recommend only looking at that the latter.
There are three interesting changes:
EnqueueDiscoveredFieldClosure::enqueue
fields' first parameter to directly take the address to patch. This simplifies some code.DiscoveredListIterator::remove
method - this should be the only relevant place where the barrier application has been missing. There is some special handling when removing from the start of the discovered list - the address points into the C-heap at that time and we should not apply a barrier here.EnqueueDiscoveredFieldClosure::enqueue
method filters out writes to non-live reference objects (as per the_is_alive
closure) - we may get called during removal of elements, and the next element is also not live. There is no need to apply the barrier to those. Actually, leaving this out could trigger an assertion inG1ParScanThreadState::write_ref_field_post
where it checks that the object we refer to that is in the collection set must be self-forwarded (i.e. an object where evacuation failed).Testing: tier1-5, kitchensink (30min) 720 times with no crash, the failing ArrayJuggle28 test 2000 times
Thanks,
Thomas
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/5786/head:pull/5786
$ git checkout pull/5786
Update a local copy of the PR:
$ git checkout pull/5786
$ git pull https://git.openjdk.java.net/jdk pull/5786/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 5786
View PR using the GUI difftool:
$ git pr show -t 5786
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/5786.diff