RFR(S): 7143490: G1: Remove HeapRegion::_top_at_conc_mark_count

Tony Printezis tony.printezis at oracle.com
Thu Apr 12 14:07:31 UTC 2012


Hi all,

On 04/09/2012 05:12 PM, Tony Printezis wrote:
>
> I just realized that there might be an additional issue with John's 
> change. If we have an evac failure during initial-mark, the live bytes 
> of the objects that are not evacuated out of a region (but are marked 
> on the next bitmap during evac failure handling) will not be correctly 
> accounted in _next_marked_bytes. (John, maybe you can  test this with 
> your "evac failure a lot" patch - it'd only happen with an evac 
> failure during initial mark?) I think the fix is straightforward. Add:
>
> if (during_initial_mark) {
>     _next_marked_bytes = marked_bytes;
> }
>
> in HeapRegion::note_self_forwarding_removal_end().

I talked with John about this yesterday and actually there's no issue 
here. During evac failure handling we call grayRoot() which not only 
marks each object on the next marking bitmap, but also accumulates its 
live bytes on a per-worker array (I had forgotten we were doing the 
latter). So, no need for the extra step in 
note_self_forwarding_removal_end(). Apologies to John for missing that 
point.

Tony




More information about the hotspot-gc-dev mailing list