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