< prev index next >

src/hotspot/share/cds/dumpTimeClassInfo.inline.hpp

Print this page

43 void DumpTimeSharedClassTable::iterate_all_live_classes(Function function) const {
44   auto wrapper = [&] (InstanceKlass* k, DumpTimeClassInfo& info) {
45     assert(SafepointSynchronize::is_at_safepoint(), "invariant");
46     assert_lock_strong(DumpTimeTable_lock);
47     if (CDSConfig::is_dumping_final_static_archive() && !k->is_loaded()) {
48       assert(k->defined_by_other_loaders(), "must be");
49       function(k, info);
50     } else if (k->is_loader_alive()) {
51       function(k, info);
52       assert(k->is_loader_alive(), "must not change");
53     } else {
54       if (!SystemDictionaryShared::is_excluded_class(k)) {
55         SystemDictionaryShared::log_exclusion(k, "Class loader not alive");
56         SystemDictionaryShared::set_excluded_locked(k);
57       }
58     }
59   };
60   DumpTimeSharedClassTableBaseType::iterate_all(wrapper);
61 }
62 














63 
64 template<class ITER>
65 void DumpTimeSharedClassTable::iterate_all_live_classes(ITER* iter) const {
66   auto function = [&] (InstanceKlass* k, DumpTimeClassInfo& v) {
67     iter->do_entry(k, v);
68   };
69   iterate_all_live_classes(function);
70 }
71 
72 #endif // INCLUDE_CDS
73 
74 #endif // SHARE_CDS_DUMPTIMECLASSINFO_INLINE_HPP

43 void DumpTimeSharedClassTable::iterate_all_live_classes(Function function) const {
44   auto wrapper = [&] (InstanceKlass* k, DumpTimeClassInfo& info) {
45     assert(SafepointSynchronize::is_at_safepoint(), "invariant");
46     assert_lock_strong(DumpTimeTable_lock);
47     if (CDSConfig::is_dumping_final_static_archive() && !k->is_loaded()) {
48       assert(k->defined_by_other_loaders(), "must be");
49       function(k, info);
50     } else if (k->is_loader_alive()) {
51       function(k, info);
52       assert(k->is_loader_alive(), "must not change");
53     } else {
54       if (!SystemDictionaryShared::is_excluded_class(k)) {
55         SystemDictionaryShared::log_exclusion(k, "Class loader not alive");
56         SystemDictionaryShared::set_excluded_locked(k);
57       }
58     }
59   };
60   DumpTimeSharedClassTableBaseType::iterate_all(wrapper);
61 }
62 
63 template<typename Function>
64 void DumpTimeSharedClassTable::iterate_all_classes_in_builtin_loaders(Function function) const {
65   auto wrapper = [&] (InstanceKlass* k, DumpTimeClassInfo& info) {
66     assert_lock_strong(DumpTimeTable_lock);
67     // k->class_loader_data() could be null for unreg classes loaded during CDSConfig::is_dumping_final_static_archive()
68     if (k->class_loader_data() != nullptr && SystemDictionaryShared::is_builtin_loader(k->class_loader_data())) {
69        assert(k->is_loader_alive(), "must be");
70        function(k, info);
71        assert(k->is_loader_alive(), "must be");
72     }
73   };
74   DumpTimeSharedClassTableBaseType::iterate_all(wrapper);
75 }
76 
77 
78 template<class ITER>
79 void DumpTimeSharedClassTable::iterate_all_live_classes(ITER* iter) const {
80   auto function = [&] (InstanceKlass* k, DumpTimeClassInfo& v) {
81     iter->do_entry(k, v);
82   };
83   iterate_all_live_classes(function);
84 }
85 
86 #endif // INCLUDE_CDS
87 
88 #endif // SHARE_CDS_DUMPTIMECLASSINFO_INLINE_HPP
< prev index next >