< prev index next >

src/hotspot/share/runtime/thread.hpp

Print this page

        

*** 1964,1996 **** static DirtyCardQueueSet& dirty_card_queue_set() { return _dirty_card_queue_set; } #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) public: void set_blocked_on_compilation(bool value) { --- 1964,1973 ----
< prev index next >