< 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 >