This commit is contained in:
John Coomes 2010-10-08 09:29:09 -07:00
commit cdc9022728
65 changed files with 1597 additions and 714 deletions

View file

@ -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"