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(); }