RFR(S): 7200261: G1: Liveness counting inconsistencies during marking verification

John Cuthbertson john.cuthbertson at oracle.com
Mon Sep 24 17:23:38 UTC 2012

Hi Bengt,

Thanks for the review.

The small range vs larger range was done purely because of what Tony and 
I saw in collect profiles. From the profiles, the bitmap routines 
were/are not (always) inlined (we couldn't figure out why). Also at 8 
iterations the loop was completely unrolled with the Solaris Studio 

With the additional code, that may no longer the be the case but I 
suspect it might be since the is_par parameter should be folded away 
when the routine is inlined.


On 09/23/12 23:44, Bengt Rutisson wrote:
> Hi John,
> The actual bug fix looks good. Nice catch! I'll let you battle out the 
> inclusion/exclusion boundary values with Jesper and Jon.
> I like that you moved set_card_bitmap_range() to ConcurrentMark. One 
> question about the <= 8 optimization. I think it would be nice if 
> set_card_bitmap_range() didn't have to worry about that. To me it 
> seems more like the responsibility of the Bitmap. Maybe we can move 
> that optimization in to par_at_put_range() / set_range() ? That way 
> all users of these method will get the benefit of the optimization.
> Actually there already seem to exist a concept inside Bitmap to handle 
> different range sizes. I didn't look very closely, but the 
> RangeSizeHint concept seem to address the same issue, right? Can we 
> consolidate this somehow?
> Thanks,
> Bengt
> On 2012-09-22 01:37, John Cuthbertson wrote:
>> Hi Everyone,
>> Can I have a couple of volunteers look over the fix for this CR? The 
>> webrev can be found at: 
>> http://cr.openjdk.java.net/~johnc/7200261/webrev.0/
>> Summary:
>> The clipping in the code that sets the bits for a range of cards in 
>> the "expected" card bitmap that we check the liveness accounting data 
>> against was incorrect. This could lead to spurious verification 
>> failures. In addition to fixing the clipping, I've upleveled this 
>> routine and moved it into ConcurrentMark and now use it to generate 
>> the real liveness data.
>> Testing:
>> The failing test cases with marking verification; jprt.
>> Thanks,
>> JohnC

More information about the hotspot-gc-dev mailing list