RFR (S/M): 8159440: Move marking of promoted objects during initial mark into the concurrent phas

Thomas Schatzl thomas.schatzl at oracle.com
Thu Nov 29 10:23:54 UTC 2018


Hi all,

  can I have reviews for this cleanup change that unifies how we handle
"roots" from survivor and old gen regions?

So at the moment, after the concurrent start pause, we have a "scan
root regions phase" that walks through the objects in the survivor
regions to find roots for the marking. This is needed because the ntams
of survivor regions is bottom, i.e. the objects are above so that
marking will not otherwise come across these.

For promoted objects we have a different mechanism: we mark those
objects on the next bitmap, and set ntams to the end of the promoted
objects, i.e. the scan of the marking will automatically follow their
references.

This special handling has several drawbacks:
- additional special handling of old gen regions manually adjusting the
nTAMS
- the promoted objects need to be marked in the pause.

This change makes handling of the promoted objects (from ntams to top)
equal to survivor regions.

For this reason we extend the existing G1RootRegions data structure to
remember the regions (both survivor and promoted-into old gen regions).
That saves quite a bit of code.

CR:
https://bugs.openjdk.java.net/browse/JDK-8159440
Webrev:
http://cr.openjdk.java.net/~tschatzl/8159440/webrev/
Testing:
hs-tier 1-5

Thanks,
  Thomas




More information about the hotspot-gc-dev mailing list