< prev index next >

src/hotspot/share/classfile/systemDictionary.cpp

Print this page




1867   // TODO: just return if !unloading_occurred.
1868   if (unloading_occurred) {
1869     {
1870       GCTraceTime(Debug, gc, phases) t("SymbolTable", gc_timer);
1871       // Check if there's work to do in the SymbolTable
1872       SymbolTable::do_check_concurrent_work();
1873     }
1874 
1875     {
1876       GCTraceTime(Debug, gc, phases) t("Dictionary", gc_timer);
1877       constraints()->purge_loader_constraints();
1878       resolution_errors()->purge_resolution_errors();
1879     }
1880   }
1881 
1882   {
1883     GCTraceTime(Debug, gc, phases) t("ProtectionDomainCacheTable", gc_timer);
1884     // Oops referenced by the protection domain cache table may get unreachable independently
1885     // of the class loader (eg. cached protection domain oops). So we need to
1886     // explicitly unlink them here.
1887     _pd_cache_table->unlink();
1888   }
1889 
1890   if (do_cleaning) {
1891     GCTraceTime(Debug, gc, phases) t("ResolvedMethodTable", gc_timer);
1892     ResolvedMethodTable::trigger_cleanup();
1893   }
1894 
1895   return unloading_occurred;
1896 }
1897 
1898 void SystemDictionary::oops_do(OopClosure* f) {
1899   f->do_oop(&_java_system_loader);
1900   f->do_oop(&_java_platform_loader);
1901   f->do_oop(&_system_loader_lock_obj);
1902   CDS_ONLY(SystemDictionaryShared::oops_do(f);)
1903 
1904   // Visit extra methods
1905   invoke_method_table()->oops_do(f);
1906 }
1907 




1867   // TODO: just return if !unloading_occurred.
1868   if (unloading_occurred) {
1869     {
1870       GCTraceTime(Debug, gc, phases) t("SymbolTable", gc_timer);
1871       // Check if there's work to do in the SymbolTable
1872       SymbolTable::do_check_concurrent_work();
1873     }
1874 
1875     {
1876       GCTraceTime(Debug, gc, phases) t("Dictionary", gc_timer);
1877       constraints()->purge_loader_constraints();
1878       resolution_errors()->purge_resolution_errors();
1879     }
1880   }
1881 
1882   {
1883     GCTraceTime(Debug, gc, phases) t("ProtectionDomainCacheTable", gc_timer);
1884     // Oops referenced by the protection domain cache table may get unreachable independently
1885     // of the class loader (eg. cached protection domain oops). So we need to
1886     // explicitly unlink them here.
1887     _pd_cache_table->trigger_cleanup();
1888   }
1889 
1890   if (do_cleaning) {
1891     GCTraceTime(Debug, gc, phases) t("ResolvedMethodTable", gc_timer);
1892     ResolvedMethodTable::trigger_cleanup();
1893   }
1894 
1895   return unloading_occurred;
1896 }
1897 
1898 void SystemDictionary::oops_do(OopClosure* f) {
1899   f->do_oop(&_java_system_loader);
1900   f->do_oop(&_java_platform_loader);
1901   f->do_oop(&_system_loader_lock_obj);
1902   CDS_ONLY(SystemDictionaryShared::oops_do(f);)
1903 
1904   // Visit extra methods
1905   invoke_method_table()->oops_do(f);
1906 }
1907 


< prev index next >