# HG changeset patch # User kbarrett # Date 1524513656 14400 # Node ID b0c100aaede61159927eb8be25d47fcb20578a8d # Parent ca5216a2a2cca3e713b37e14475e5c9e8a719071 8201826: G1: Don't invoke WeakProcessor if mark stack has overflowed Summary: Move WeakProcessor invocation after overflow check Reviewed-by: stefank, tschatzl diff -r ca5216a2a2cc -r b0c100aaede6 src/hotspot/share/gc/g1/g1ConcurrentMark.cpp --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp Mon Apr 23 14:51:16 2018 -0500 +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp Mon Apr 23 16:00:56 2018 -0400 @@ -1695,14 +1695,6 @@ assert(!rp->discovery_enabled(), "Post condition"); } - assert(has_overflown() || _global_mark_stack.is_empty(), - "Mark stack should be empty (unless it has overflown)"); - - { - GCTraceTime(Debug, gc, phases) debug("Weak Processing", _gc_timer_cm); - WeakProcessor::weak_oops_do(&g1_is_alive, &do_nothing_cl); - } - if (has_overflown()) { // We can not trust g1_is_alive if the marking stack overflowed return; @@ -1710,6 +1702,11 @@ assert(_global_mark_stack.is_empty(), "Marking should have completed"); + { + GCTraceTime(Debug, gc, phases) debug("Weak Processing", _gc_timer_cm); + WeakProcessor::weak_oops_do(&g1_is_alive, &do_nothing_cl); + } + // Unload Klasses, String, Symbols, Code Cache, etc. if (ClassUnloadingWithConcurrentMark) { GCTraceTime(Debug, gc, phases) debug("Class Unloading", _gc_timer_cm);