src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
Print this page
rev 6498 : 8044796: G1: Enable G1CollectedHeap::stop()
Reviewed-by:
*** 431,448 ****
assert(hr != NULL, "invariant");
hr->set_next_dirty_cards_region(NULL);
return hr;
}
- void G1CollectedHeap::stop_conc_gc_threads() {
- _cg1r->stop();
- _cmThread->stop();
- if (G1StringDedup::is_enabled()) {
- G1StringDedup::stop();
- }
- }
-
#ifdef ASSERT
// A region is added to the collection set as it is retired
// so an address p can point to a region which will be in the
// collection set but has not yet been retired. This method
// therefore is only accurate during a GC pause after all
--- 431,440 ----
*** 2172,2195 ****
return JNI_OK;
}
void G1CollectedHeap::stop() {
! #if 0
! // Stopping concurrent worker threads is currently disabled until
! // some bugs in concurrent mark has been resolve. Without fixing
! // those bugs first we risk haning during VM exit when trying to
! // stop these threads.
!
! // Abort any ongoing concurrent root region scanning and stop all
! // concurrent threads. We do this to make sure these threads do
! // not continue to execute and access resources (e.g. gclog_or_tty)
// that are destroyed during shutdown.
! _cm->root_regions()->abort();
! _cm->root_regions()->wait_until_scan_finished();
! stop_conc_gc_threads();
! #endif
}
size_t G1CollectedHeap::conservative_max_heap_alignment() {
return HeapRegion::max_region_size();
}
--- 2164,2181 ----
return JNI_OK;
}
void G1CollectedHeap::stop() {
! // Stop all concurrent threads. We do this to make sure these threads
! // do not continue to execute and access resources (e.g. gclog_or_tty)
// that are destroyed during shutdown.
! _cg1r->stop();
! _cmThread->stop();
! if (G1StringDedup::is_enabled()) {
! G1StringDedup::stop();
! }
}
size_t G1CollectedHeap::conservative_max_heap_alignment() {
return HeapRegion::max_region_size();
}