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

Per Liden per.liden at oracle.com
Thu Nov 28 16:50:01 UTC 2013


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