--- a/src/hotspot/share/classfile/systemDictionary.cpp Wed Aug 15 15:50:23 2018 -0400
+++ b/src/hotspot/share/classfile/systemDictionary.cpp Wed Aug 15 16:01:48 2018 -0400
@@ -1858,10 +1858,19 @@
}
}
+ // TODO: just return if !unloading_occurred.
if (unloading_occurred) {
- GCTraceTime(Debug, gc, phases) t("Dictionary", gc_timer);
- constraints()->purge_loader_constraints();
- resolution_errors()->purge_resolution_errors();
+ {
+ GCTraceTime(Debug, gc, phases) t("SymbolTable", gc_timer);
+ // Check if there's work to do in the SymbolTable
+ SymbolTable::do_check_concurrent_work();
+ }
+
+ {
+ GCTraceTime(Debug, gc, phases) t("Dictionary", gc_timer);
+ constraints()->purge_loader_constraints();
+ resolution_errors()->purge_resolution_errors();
+ }
}
{