RFR: Fix Region Promotion
William Kemper
wkemper at openjdk.java.net
Wed May 5 18:30:23 UTC 2021
This is rebased pull request of https://github.com/openjdk/shenandoah/pull/32.
There are bugs in region promotion.
* Humongous object continuation region remainder object starts are not registered for remembered set scanning purposes.
* Also, iterating over humongous objects at promotion time to set card table values is inefficient. This is better delayed until card table scanning.
* Regions that are not either regular or humongous should not get promoted, in particular the cset region state needs to be excluded.
* We need to prevent regions that contain TLABs or GCLABs from getting promoted with these remaining active. One could retire those LABs once again at final update refs, but that would be inefficient. An alternative defensive and robust fix is to exclude regions that contain any TLAB or GCLAB from promotion. This should not restrict promotions much, because regions tend to fill up as they age and eventually they won't have LABs.
All of the above is fixed by the commits proposed here.
This PR is best applied after PR #30, the outcome of which it is rebased to at the moment.
-------------
Commit messages:
- Prevent promotion of regions with active TLABs or GCLABs.
- Fix humongous object promotion.
- Remove remset object registration at a shared mere allocation.
Changes: https://git.openjdk.java.net/shenandoah/pull/36/files
Webrev: https://webrevs.openjdk.java.net/?repo=shenandoah&pr=36&range=00
Stats: 140 lines in 7 files changed: 73 ins; 58 del; 9 mod
Patch: https://git.openjdk.java.net/shenandoah/pull/36.diff
Fetch: git fetch https://git.openjdk.java.net/shenandoah pull/36/head:pull/36
PR: https://git.openjdk.java.net/shenandoah/pull/36
More information about the shenandoah-dev
mailing list