RFR(s): 8029255: G1: Reference processing should not enqueue references on the shared SATB queue (original) (raw)

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::verifynocsetoops() 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 discoveredlistneedsbarrier 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