< prev index next >

src/share/vm/gc/g1/vm_operations_g1.cpp

Print this page
rev 11747 : [mq]: per.hotspot.patch

*** 202,241 **** } } } } - void VM_CGC_Operation::acquire_pending_list_lock() { - _pending_list_locker.lock(); - } - - void VM_CGC_Operation::release_and_notify_pending_list_lock() { - _pending_list_locker.unlock(); - } - void VM_CGC_Operation::doit() { GCIdMark gc_id_mark(_gc_id); GCTraceCPUTime tcpu; G1CollectedHeap* g1h = G1CollectedHeap::heap(); GCTraceTime(Info, gc) t(_printGCMessage, g1h->concurrent_mark()->gc_timer_cm(), GCCause::_no_gc, true); IsGCActiveMark x; _cl->do_void(); } bool VM_CGC_Operation::doit_prologue() { - // Note the relative order of the locks must match that in - // VM_GC_Operation::doit_prologue() or deadlocks can occur - if (_needs_pending_list_lock) { - acquire_pending_list_lock(); - } Heap_lock->lock(); return true; } void VM_CGC_Operation::doit_epilogue() { ! // Note the relative order of the unlocks must match that in ! // VM_GC_Operation::doit_epilogue() ! Heap_lock->unlock(); ! if (_needs_pending_list_lock) { ! release_and_notify_pending_list_lock(); } } --- 202,226 ---- } } } } void VM_CGC_Operation::doit() { GCIdMark gc_id_mark(_gc_id); GCTraceCPUTime tcpu; G1CollectedHeap* g1h = G1CollectedHeap::heap(); GCTraceTime(Info, gc) t(_printGCMessage, g1h->concurrent_mark()->gc_timer_cm(), GCCause::_no_gc, true); IsGCActiveMark x; _cl->do_void(); } bool VM_CGC_Operation::doit_prologue() { Heap_lock->lock(); return true; } void VM_CGC_Operation::doit_epilogue() { ! if (Universe::has_reference_pending_list()) { ! Heap_lock->notify_all(); } + Heap_lock->unlock(); }
< prev index next >