1856 if (unloading_occurred) { |
1856 if (unloading_occurred) { |
1857 ClassLoaderDataGraph::clean_module_and_package_info(); |
1857 ClassLoaderDataGraph::clean_module_and_package_info(); |
1858 } |
1858 } |
1859 } |
1859 } |
1860 |
1860 |
|
1861 // TODO: just return if !unloading_occurred. |
1861 if (unloading_occurred) { |
1862 if (unloading_occurred) { |
1862 GCTraceTime(Debug, gc, phases) t("Dictionary", gc_timer); |
1863 { |
1863 constraints()->purge_loader_constraints(); |
1864 GCTraceTime(Debug, gc, phases) t("SymbolTable", gc_timer); |
1864 resolution_errors()->purge_resolution_errors(); |
1865 // Check if there's work to do in the SymbolTable |
|
1866 SymbolTable::do_check_concurrent_work(); |
|
1867 } |
|
1868 |
|
1869 { |
|
1870 GCTraceTime(Debug, gc, phases) t("Dictionary", gc_timer); |
|
1871 constraints()->purge_loader_constraints(); |
|
1872 resolution_errors()->purge_resolution_errors(); |
|
1873 } |
1865 } |
1874 } |
1866 |
1875 |
1867 { |
1876 { |
1868 GCTraceTime(Debug, gc, phases) t("ProtectionDomainCacheTable", gc_timer); |
1877 GCTraceTime(Debug, gc, phases) t("ProtectionDomainCacheTable", gc_timer); |
1869 // Oops referenced by the protection domain cache table may get unreachable independently |
1878 // Oops referenced by the protection domain cache table may get unreachable independently |