RFR (S): 7080389: G1: refactor marking code in evacuation pause copy closures
Bengt Rutisson
bengt.rutisson at oracle.com
Sun Aug 21 21:03:32 UTC 2011
Hi John,
This new webrev looks good to me.
The discussion that Stefan and Tony had was good. I like the new
template parameter name (do_mark_object) and the new comments much
better. In fact, I realize my initial comments regarding those were a
bit wrong since I had misinterpreted the code due to the old comments.
Thanks for finding a good solution to this.
Ship it!
Bengt
On 2011-08-20 01:12, John Cuthbertson wrote:
> Hi Everyone,
>
> Hopefully this webrev
> (http://cr.openjdk.java.net/~johnc/7080389/webrev.1/) addresses
> everyones' comments.
>
> Thanks,
>
> JohnC
>
> On 08/18/11 11:17, John Cuthbertson wrote:
>> Hi Everyone,
>>
>> Can I have a couple of volunteers review these refactoring changes to
>> the marking code used during evacuation pauses (both initial mark
>> pauses and regular evacuation pauses when marking is active) - the
>> change can be found at
>> http://cr.openjdk.java.net/~johnc/7080389/webrev.0/.
>>
>> The refactoring changes fix an issue that was seen with the code
>> changes for 6486945.
>>
>> During an initial mark pause, during root scanning, one thread had
>> successfully forwarded an object and had started to copy it. While
>> the object was being copied to its new location, another thread saw
>> that the object had been forwarded and, after checking that the new
>> location was unmarked, successfully marked the new location. The
>> first thread would finish the copying, see that the new location was
>> marked and skip the mark. The situation I ran into was that I was
>> attempting to obtain the size of the new object just after it was
>> marked (by the thread doing the marking) and the old object had not
>> yet been fully copied to its new location.
>>
>> With these refactoring changes, the thread that successfully forwards
>> an object in the collection set will mark the forwardee after copying
>> - allowing me to safely obtain it's size.
>>
>> Testing: several runs of the GC test suite with a marking threshold
>> of 10 and 20%, Kitchensink, and jprt.
>>
>> Thanks,
>>
>> JohnC
>>
>>
>
More information about the hotspot-gc-dev
mailing list