< prev index next >
hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp
Print this page
rev 6902 : 8062036: ConcurrentMarkThread::slt may be invoked before ConcurrentMarkThread::makeSurrogateLockerThread causing intermittent crashes
Summary: Suppress gc_alot during VM init, improve error for SLT uninitialized.
Reviewed-by: jmasa, brutisso, tschatzl
*** 48,59 ****
// Methods in abstract class VM_CMS_Operation
//////////////////////////////////////////////////////////
void VM_CMS_Operation::acquire_pending_list_lock() {
// The caller may block while communicating
// with the SLT thread in order to acquire/release the PLL.
! ConcurrentMarkSweepThread::slt()->
! manipulatePLL(SurrogateLockerThread::acquirePLL);
}
void VM_CMS_Operation::release_and_notify_pending_list_lock() {
// The caller may block while communicating
// with the SLT thread in order to acquire/release the PLL.
--- 48,63 ----
// Methods in abstract class VM_CMS_Operation
//////////////////////////////////////////////////////////
void VM_CMS_Operation::acquire_pending_list_lock() {
// The caller may block while communicating
// with the SLT thread in order to acquire/release the PLL.
! SurrogateLockerThread* slt = ConcurrentMarkSweepThread::slt();
! if (slt != NULL) {
! slt->manipulatePLL(SurrogateLockerThread::acquirePLL);
! } else {
! SurrogateLockerThread::report_missing_slt();
! }
}
void VM_CMS_Operation::release_and_notify_pending_list_lock() {
// The caller may block while communicating
// with the SLT thread in order to acquire/release the PLL.
< prev index next >