< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
Print this page
rev 49825 : [mq]: fix
@@ -1693,25 +1693,22 @@
pt.print_enqueue_phase();
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;
}
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);
bool purged_classes = SystemDictionary::do_unloading(&g1_is_alive, _gc_timer_cm, false /* Defer cleaning */);
_g1h->complete_cleaning(&g1_is_alive, purged_classes);
< prev index next >