RFR: 8142402: G1 should not redirty cards in free regions

Erik Helin erik.helin at oracle.com
Wed Nov 25 13:15:23 UTC 2015


On 2015-11-11, Thomas Schatzl wrote:
> Hi,
> 
> On Tue, 2015-11-10 at 16:36 +0100, Erik Helin wrote:
> > And StefanK spotted that we no longer need to use
> > G1CollectedHeap::heap() in G1RedirtyLoggedCardsTasks since we store a
> > pointer to G1CollectedHeap in the field _g1h. Please see new webrevs:
> > 
> > - incremental
> > http://cr.openjdk.java.net/~ehelin/8142402/webrev.01-02/
> > - full:
> > http://cr.openjdk.java.net/~ehelin/8142402/webrev.02/
> > 
> > Thanks,
> > Erik

Thomas, Stefan,

I discovered (after some more testing) that the condition for when to
dirty cards is slightly wrong in this patch.

Since free_collection_set is run *after* redirty_logged_cards
(which is being called from post_evacuate_collection_set), the regions
will not be free when they are being processed by redirty_logged_cards.
Therefore, we should only dirty cards if the region won't be freed by
free_collection_set. A region will be freed if it is in the
collection set and has not had an evacuation failure.

Please see updated webrevs:
- inc: http://cr.openjdk.java.net/~ehelin/8142402/webrev.02-03/
- full: http://cr.openjdk.java.net/~ehelin/8142402/webrev.03/

Testing:
- GC test suite will full verification

Thanks,
Erik

> 
>   looks good to me.
> 
> Thanks,
>   Thomas
> 
> 


More information about the hotspot-gc-dev mailing list