Mercurial > hg > truffle
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"); |