RFR(S): 7121496: G1: do the per-region evacuation failure handling work in parallel

John Cuthbertson john.cuthbertson at oracle.com
Tue Jan 3 18:55:56 UTC 2012


Hi Tony,

Thanks for looking over the code change.

On 12/28/11 04:03, Tony Printezis wrote:
> John,
>
> Thanks for doing this, it looks good. A few comments:
>
> g1CollectedHeap.cpp:
>
> 4102     assert(_g1h->g1_policy()->assertMarkedBytesDataOK(), "Should 
> be!");
>
> Since this will now be executed concurrently with other workers doing 
> the self-forward removal it might pick up inconsistent information 
> (not 100% sure that this will be the case, but I'd like be careful!). 
> Why don't you stop calling it per region and only call it once at the 
> start of remove_self_forwarding_pointers() (it's already called at the 
> end).

Sure. No problem.

> 4192   // Now reset the claim values in the regions in the collection 
> set.
> 4193   ResetClaimValuesClosure reset_cv_cl;
> 4194   collection_set_iterate(&reset_cv_cl);
>
> This is fine but we already have:
>
> reset_heap_region_claim_values()
> check_heap_region_claim_values()
>
> and
>
> check_cset_heap_region_claim_values()
>
> Can you maybe introduce reset_cset_heap_region_claim_values() for 
> consistency?

Again no problem.
>
> BTW, I liked that you declared the update_rset_cl once per task.

Thanks. It seemed the most natural way to do it.

I'll also follow  Igor's suggestion of moving these closures into a new 
.hpp file.

Thanks,

JohnC



More information about the hotspot-gc-dev mailing list