RFR(s): 8029162: G1: Shared SATB queue never enabled

Thomas Schatzl thomas.schatzl at oracle.com
Fri Nov 29 09:01:15 UTC 2013


On Thu, 2013-11-28 at 17:49 +0100, Per Liden wrote:
> Summary: When activating/deactivating the G1 pre-barrier all SATB queues 
> are looped through and have their active state set accordingly. There is 
> one queue per Java thread and a shared queue for all non-Java threads. 
> The loop done to set the active state of all queues forgets to set the 
> active state on the shared queue. I suspect this was missed because the 
> logic in SATBMarkQueueSet::set_active_all_threads() is mixed with quite 
> a bit of verification code. This patch also moves this verification code 
> out into a separate function.

  I actually suspect that the shared queue has intentionally not been
enabled so that the reference queue code becomes simpler - just do an
oop_store() instead of manually invoking the barrier.

So I think this change is just breaking "fine" code (for an arbitrary
definition of fine :), "fixed" then by JDK-8029255 .

> Testing done: jprt, kitchensink (10 hours), gcbasher (10 hours)
> http://cr.openjdk.java.net/~pliden/8029162/webrev.0/
> https://bugs.openjdk.java.net/browse/JDK-8029162

Looks good. Will have a look at the other change right away.


More information about the hotspot-gc-dev mailing list