< prev index next >

src/hotspot/share/classfile/classLoaderData.cpp

Print this page

        

*** 74,88 **** #include "runtime/safepoint.hpp" #include "runtime/safepointVerifiers.hpp" #include "utilities/growableArray.hpp" #include "utilities/macros.hpp" #include "utilities/ostream.hpp" - #include "utilities/ticks.hpp" - #if INCLUDE_JFR - #include "jfr/jfr.hpp" - #include "jfr/jfrEvents.hpp" - #endif volatile size_t ClassLoaderDataGraph::_num_array_classes = 0; volatile size_t ClassLoaderDataGraph::_num_instance_classes = 0; ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL; --- 74,83 ----
*** 1314,1346 **** return false; } #endif // PRODUCT - #if INCLUDE_JFR - static Ticks class_unload_time; - static void post_class_unload_event(Klass* const k) { - assert(k != NULL, "invariant"); - EventClassUnload event(UNTIMED); - event.set_endtime(class_unload_time); - event.set_unloadedClass(k); - event.set_definingClassLoader(k->class_loader_data()); - event.commit(); - } - - static void post_class_unload_events() { - assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint!"); - if (Jfr::is_enabled()) { - if (EventClassUnload::is_enabled()) { - class_unload_time = Ticks::now(); - ClassLoaderDataGraph::classes_unloading_do(&post_class_unload_event); - } - Jfr::on_unloading_classes(); - } - } - #endif // INCLUDE_JFR - // Move class loader data from main list to the unloaded list for unloading // and deallocation later. bool ClassLoaderDataGraph::do_unloading(bool do_cleaning) { // Indicate whether safepoint cleanup is needed. --- 1309,1318 ----
*** 1380,1393 **** } dead->set_next(_unloading); _unloading = dead; } - if (seen_dead_loader) { - JFR_ONLY(post_class_unload_events();) - } - log_debug(class, loader, data)("do_unloading: loaders processed %u, loaders removed %u", loaders_processed, loaders_removed); return seen_dead_loader; } --- 1352,1361 ----
< prev index next >