Skip to content
This repository has been archived by the owner. It is now read-only.

8258714: Shenandoah: Process references before evacuation during degen #55

Closed
wants to merge 2 commits into from

Conversation

rkennke
Copy link
Contributor

@rkennke rkennke commented Dec 21, 2020

Currently, when doing degen-cycle, we process references right before immediate-garbage cleanup. It is imperative that we process references before any immediate garbage gets recycled, or else we may end up with bad references during reference-processing. However, the trouble is that immediate garbage can be recycled even before cleanup phase by recycle-assist. For this reason, we must process references before any evacuation during degen GC. It is also more natural: we process refs before weak roots and class-unloading during concurrent cycle, and should do the same during degen cycle.
(Note that we already prevent recycle-assist in concurrent phase)

The change also adds STW timing for the weak-refs-processing, rather than polluting the conc-weak-refs timings.

Testing:

  • 30 good runs of hotspot_gc_shenandoah, which showed the crash fairly reliably before

Ok?


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Issue

  • JDK-8258714: Shenandoah: Process references before evacuation during degen

Reviewers

Download

$ git fetch https://git.openjdk.java.net/jdk16 pull/55/head:pull/55
$ git checkout pull/55

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Dec 21, 2020

👋 Welcome back rkennke! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk openjdk bot added the rfr label Dec 21, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Dec 21, 2020

@rkennke The following labels will be automatically applied to this pull request:

  • hotspot-gc
  • shenandoah

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.

@openjdk openjdk bot added hotspot-gc shenandoah labels Dec 21, 2020
Copy link
Contributor

@shipilev shipilev left a comment

Looks good!

@openjdk
Copy link

@openjdk openjdk bot commented Dec 21, 2020

@rkennke 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:

8258714: Shenandoah: Process references before evacuation during degen

Reviewed-by: shade

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 master branch. If another commit should be pushed before you perform the /integrate command, your PR will be automatically rebased. If you prefer to avoid any potential automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready label Dec 21, 2020
@mlbridge
Copy link

@mlbridge mlbridge bot commented Dec 21, 2020

Webrevs

@rkennke
Copy link
Contributor Author

@rkennke rkennke commented Dec 21, 2020

/integrate

@openjdk openjdk bot closed this Dec 21, 2020
@openjdk openjdk bot added integrated and removed ready rfr labels Dec 21, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Dec 21, 2020

@rkennke Pushed as commit 2525f39.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
hotspot-gc integrated shenandoah
2 participants