RFR(s): 8029255: G1: Reference processing should not enqueue references on the shared SATB queue
Per Liden
per.liden at oracle.com
Wed Jan 8 14:55:43 UTC 2014
Thanks Bengt!
The bug is updated with the alternatives we discussed.
/Per
On 2014-01-08 14:42, Bengt Rutisson wrote:
>
> Looks good, Per!
>
> For the record, Per and I discussed a couple of different options to
> solve this issue but came to the conclusion that the current patch is
> the better option for now. Per will document the other options in the
> bug report.
>
> Bengt
>
>
> On 2013-11-28 17:50, Per Liden wrote:
>> Summary: A side effect of fixing JDK-8029162 (G1: Shared SATB queue
>> never enabled) is that the reference processor will start to add
>> references to the shared SATB queue when enqueuing discovered
>> references. This will later cause
>> ConcurrentMark::verify_no_cset_oops() to fail because we now have
>> enqueued references in the SATB qeueue which points into the
>> collection set (which will be empty after the collection). This patch
>> makes sure we avoid doing pre-barriers, by instead doing raw stores
>> followed by a post-barrier.
>>
>> This patch also removes an unused constructor and the unnecessary
>> caching of the barrier set in the ReferenceProcessor. So use of _bs
>> was replaced by oopDesc::bs(). Further, the cached barrier set was
>> only set/used if discovered_list_needs_barrier was true, but with
>> this change we will need the barrier set in other cases too.
>>
>> Testing done: jprt, kitchensink (10 hours), gcbasher (10 hours)
>>
>> http://cr.openjdk.java.net/~pliden/8029255/webrev.0/
>>
>> https://bugs.openjdk.java.net/browse/JDK-8029255
>>
>> cheers,
>> /Per
>
More information about the hotspot-gc-dev
mailing list