mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
Merge
This commit is contained in:
commit
cdc9022728
65 changed files with 1597 additions and 714 deletions
|
@ -1490,6 +1490,29 @@ public:
|
|||
}
|
||||
#endif // !SERIALGC
|
||||
|
||||
// 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).
|
||||
#ifndef SERIALGC
|
||||
void initialize_queues();
|
||||
#else // !SERIALGC
|
||||
void initialize_queues() { }
|
||||
#endif // !SERIALGC
|
||||
|
||||
// Machine dependent stuff
|
||||
#include "incls/_thread_pd.hpp.incl"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue