RFR (M): 8129558: Coalesce dead objects during removal of self-forwarded pointers

Thomas Schatzl thomas.schatzl at oracle.com
Thu Jun 25 20:58:56 UTC 2015

Hi Tom,

  thanks for the review.

On Thu, 2015-06-25 at 11:51 -0400, Tom Benson wrote:
> Hi Thomas,
> A couple of minor comments and questions:
> It looks like "_last_forwared_object_end" is misspelled throughout.

Fixed :)

> The RemoveSelfForwardPtrObjClosure constructor was changed to set _g1 to 
> G1CollectedHeap::heap() and _cm to _g1->concurrent_mark() rather being 
> given them by RemoveSelfForwardPtrHRClosure.  This seems a little odd, 
> since RemoveSelfForwardPtrHRClosure is given the values by 
> G1ParRemoveSelfForwardPtrsTask::work .   Of course they'll be the same, 
> but perhaps they should either be consistently inherited or not.  Am I 
> missing something there?

I will make them consistent.

> I think this comment is stale, possibly having been cut/pasted from the 
> old version of do_object.  Now, the code is processing a range which may 
> have contained multiple objects:
>   69   // The object has been either evacuated or is dead. Fill it with a
>   70   // dummy object.


> In doHeapRegion, I'm a little surprised that both the old and new 
> versions of the code do the _g1h->check_bitmaps() call before doing the 
> updates,  rather than afterward.   Should it be afterward, or should 
> there be another verification?

It does not matter as long it is after the
note_self_forwarding_removal_start() as it may update the ntams, and
ntams is considered in the checking.

I will provide a new webrev with your and Tony's changes soon.


More information about the hotspot-gc-dev mailing list