comparison src/share/vm/gc_implementation/shared/concurrentGCThread.cpp @ 20646:4e4ebe50c8e3

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
author kbarrett
date Tue, 11 Nov 2014 13:39:00 -0500
parents 581e70386ec9
children 7848fc12602b
comparison
equal deleted inserted replaced
20643:b2399f0d9611 20646:4e4ebe50c8e3
135 } 135 }
136 os::yield(); // This seems to help with initial start-up of SLT 136 os::yield(); // This seems to help with initial start-up of SLT
137 return res; 137 return res;
138 } 138 }
139 139
140 void SurrogateLockerThread::report_missing_slt() {
141 vm_exit_during_initialization(
142 "GC before GC support fully initialized: "
143 "SLT is needed but has not yet been created.");
144 ShouldNotReachHere();
145 }
146
140 void SurrogateLockerThread::manipulatePLL(SLT_msg_type msg) { 147 void SurrogateLockerThread::manipulatePLL(SLT_msg_type msg) {
141 MutexLockerEx x(&_monitor, Mutex::_no_safepoint_check_flag); 148 MutexLockerEx x(&_monitor, Mutex::_no_safepoint_check_flag);
142 assert(_buffer == empty, "Should be empty"); 149 assert(_buffer == empty, "Should be empty");
143 assert(msg != empty, "empty message"); 150 assert(msg != empty, "empty message");
144 assert(!Heap_lock->owned_by_self(), "Heap_lock owned by requesting thread"); 151 assert(!Heap_lock->owned_by_self(), "Heap_lock owned by requesting thread");