< prev index next >
src/share/vm/gc_implementation/g1/vm_operations_g1.cpp
Print this page
rev 7316 : 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:
rev 7317 : 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
*** 211,222 ****
void VM_CGC_Operation::acquire_pending_list_lock() {
assert(_needs_pll, "don't call this otherwise");
// The caller may block while communicating
// with the SLT thread in order to acquire/release the PLL.
! ConcurrentMarkThread::slt()->
! manipulatePLL(SurrogateLockerThread::acquirePLL);
}
void VM_CGC_Operation::release_and_notify_pending_list_lock() {
assert(_needs_pll, "don't call this otherwise");
// The caller may block while communicating
--- 211,226 ----
void VM_CGC_Operation::acquire_pending_list_lock() {
assert(_needs_pll, "don't call this otherwise");
// The caller may block while communicating
// with the SLT thread in order to acquire/release the PLL.
! SurrogateLockerThread* slt = ConcurrentMarkThread::slt();
! if (slt != NULL) {
! slt->manipulatePLL(SurrogateLockerThread::acquirePLL);
! } else {
! SurrogateLockerThread::report_missing_slt();
! }
}
void VM_CGC_Operation::release_and_notify_pending_list_lock() {
assert(_needs_pll, "don't call this otherwise");
// The caller may block while communicating
< prev index next >