< prev index next >

src/hotspot/share/classfile/systemDictionary.cpp

Print this page




1861   // TODO: just return if !unloading_occurred.
1862   if (unloading_occurred) {
1863     {
1864       GCTraceTime(Debug, gc, phases) t("SymbolTable", gc_timer);
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     }
1874   }
1875 
1876   {
1877     GCTraceTime(Debug, gc, phases) t("ProtectionDomainCacheTable", gc_timer);
1878     // Oops referenced by the protection domain cache table may get unreachable independently
1879     // of the class loader (eg. cached protection domain oops). So we need to
1880     // explicitly unlink them here.
1881     _pd_cache_table->unlink();
1882   }
1883 
1884   if (do_cleaning) {
1885     GCTraceTime(Debug, gc, phases) t("ResolvedMethodTable", gc_timer);
1886     ResolvedMethodTable::trigger_cleanup();
1887   }
1888 
1889   return unloading_occurred;
1890 }
1891 
1892 void SystemDictionary::oops_do(OopClosure* f) {
1893   f->do_oop(&_java_system_loader);
1894   f->do_oop(&_java_platform_loader);
1895   f->do_oop(&_system_loader_lock_obj);
1896   CDS_ONLY(SystemDictionaryShared::oops_do(f);)
1897 
1898   // Visit extra methods
1899   invoke_method_table()->oops_do(f);
1900 }
1901 




1861   // TODO: just return if !unloading_occurred.
1862   if (unloading_occurred) {
1863     {
1864       GCTraceTime(Debug, gc, phases) t("SymbolTable", gc_timer);
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     }
1874   }
1875 
1876   {
1877     GCTraceTime(Debug, gc, phases) t("ProtectionDomainCacheTable", gc_timer);
1878     // Oops referenced by the protection domain cache table may get unreachable independently
1879     // of the class loader (eg. cached protection domain oops). So we need to
1880     // explicitly unlink them here.
1881     _pd_cache_table->trigger_cleanup();
1882   }
1883 
1884   if (do_cleaning) {
1885     GCTraceTime(Debug, gc, phases) t("ResolvedMethodTable", gc_timer);
1886     ResolvedMethodTable::trigger_cleanup();
1887   }
1888 
1889   return unloading_occurred;
1890 }
1891 
1892 void SystemDictionary::oops_do(OopClosure* f) {
1893   f->do_oop(&_java_system_loader);
1894   f->do_oop(&_java_platform_loader);
1895   f->do_oop(&_system_loader_lock_obj);
1896   CDS_ONLY(SystemDictionaryShared::oops_do(f);)
1897 
1898   // Visit extra methods
1899   invoke_method_table()->oops_do(f);
1900 }
1901 


< prev index next >