RFR(s): 8029162: G1: Shared SATB queue never enabled
Thomas Schatzl
thomas.schatzl at oracle.com
Fri Nov 29 09:01:15 UTC 2013
Hi,
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.
Thomas
More information about the hotspot-gc-dev
mailing list