--- old/src/hotspot/share/runtime/thread.hpp 2018-02-15 12:33:10.816676494 +0100 +++ new/src/hotspot/share/runtime/thread.hpp 2018-02-15 12:33:10.553665165 +0100 @@ -1966,29 +1966,6 @@ } #endif // INCLUDE_ALL_GCS - // This method initializes the SATB and dirty card queues before a - // JavaThread is added to the Java thread list. Right now, we don't - // have to do anything to the dirty card queue (it should have been - // activated when the thread was created), but we have to activate - // the SATB queue if the thread is created while a marking cycle is - // in progress. The activation / de-activation of the SATB queues at - // the beginning / end of a marking cycle is done during safepoints - // so we have to make sure this method is called outside one to be - // able to safely read the active field of the SATB queue set. Right - // now, it is called just before the thread is added to the Java - // thread list in the Threads::add() method. That method is holding - // the Threads_lock which ensures we are outside a safepoint. We - // cannot do the obvious and set the active field of the SATB queue - // when the thread is created given that, in some cases, safepoints - // might happen between the JavaThread constructor being called and the - // thread being added to the Java thread list (an example of this is - // when the structure for the DestroyJavaVM thread is created). -#if INCLUDE_ALL_GCS - void initialize_queues(); -#else // INCLUDE_ALL_GCS - void initialize_queues() { } -#endif // INCLUDE_ALL_GCS - // Machine dependent stuff #include OS_CPU_HEADER(thread)