7099824: G1: we should take the pending list lock before doing the remark pause

Acquire the pending list lock in the prologue method of G1's concurrent VM_Operation and release the lock in the epilogue() method. The locking/unlocking order of the pending list lock and the Heap_lock should match that in the prologue and epilogue methods of VM_GC_Operation.

Reviewed-by: tonyp, ysr
This commit is contained in:
John Cuthbertson 2011-10-20 12:06:20 -07:00
parent 0615005089
commit c8143a724e
4 changed files with 40 additions and 11 deletions

View file

@ -224,6 +224,8 @@ void SurrogateLockerThread::manipulatePLL(SLT_msg_type msg) {
MutexLockerEx x(&_monitor, Mutex::_no_safepoint_check_flag);
assert(_buffer == empty, "Should be empty");
assert(msg != empty, "empty message");
assert(!Heap_lock->owned_by_self(), "Heap_lock owned by requesting thread");
_buffer = msg;
while (_buffer != empty) {
_monitor.notify();