< prev index next >
src/share/vm/gc/g1/g1MarkSweep.cpp
Print this page
rev 12504 : 8171238: Unify cleanup code used in G1 Remark and Full GC marking
Reviewed-by:
*** 168,193 ****
GCTraceTime(Debug, gc, phases) trace("Class Unloading", gc_timer());
// Unload classes and purge the SystemDictionary.
bool purged_class = SystemDictionary::do_unloading(&GenMarkSweep::is_alive);
! // Unload nmethods.
! CodeCache::do_unloading(&GenMarkSweep::is_alive, purged_class);
!
! // Prune dead klasses from subklass/sibling/implementor lists.
! Klass::clean_weak_klass_links(&GenMarkSweep::is_alive);
! }
!
! {
! GCTraceTime(Debug, gc, phases) trace("Scrub String and Symbol Tables", gc_timer());
! // Delete entries for dead interned string and clean up unreferenced symbols in symbol table.
! g1h->unlink_string_and_symbol_table(&GenMarkSweep::is_alive);
! }
!
! if (G1StringDedup::is_enabled()) {
! GCTraceTime(Debug, gc, phases) trace("String Deduplication Unlink", gc_timer());
! G1StringDedup::unlink(&GenMarkSweep::is_alive);
}
if (VerifyDuringGC) {
HandleMark hm; // handle scope
#if defined(COMPILER2) || INCLUDE_JVMCI
--- 168,181 ----
GCTraceTime(Debug, gc, phases) trace("Class Unloading", gc_timer());
// Unload classes and purge the SystemDictionary.
bool purged_class = SystemDictionary::do_unloading(&GenMarkSweep::is_alive);
! g1h->full_cleaning(&GenMarkSweep::is_alive, purged_class);
! } else {
! GCTraceTime(Debug, gc, phases) trace("Cleanup", gc_timer());
! g1h->partial_cleaning(&GenMarkSweep::is_alive, true, true, G1StringDedup::is_enabled());
}
if (VerifyDuringGC) {
HandleMark hm; // handle scope
#if defined(COMPILER2) || INCLUDE_JVMCI
< prev index next >