--- old/src/share/vm/classfile/classLoaderData.hpp 2019-02-15 19:02:22.515354837 +0300 +++ new/src/share/vm/classfile/classLoaderData.hpp 2019-02-15 19:02:22.411358476 +0300 @@ -32,8 +32,8 @@ #include "runtime/mutex.hpp" #include "utilities/growableArray.hpp" #include "utilities/macros.hpp" -#if INCLUDE_TRACE -#include "utilities/ticks.hpp" +#if INCLUDE_JFR +#include "jfr/support/jfrTraceIdExtension.hpp" #endif // @@ -70,7 +70,6 @@ static bool _should_purge; static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS); - static void post_class_unload_events(void); static void clean_metaspaces(); public: static ClassLoaderData* find_or_create(Handle class_loader, TRAPS); @@ -82,6 +81,7 @@ static void always_strong_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim); // cld do static void cld_do(CLDClosure* cl); + static void cld_unloading_do(CLDClosure* cl); static void roots_cld_do(CLDClosure* strong, CLDClosure* weak); static void keep_alive_cld_do(CLDClosure* cl); static void always_strong_cld_do(CLDClosure* cl); @@ -116,12 +116,6 @@ #ifndef PRODUCT static bool contains_loader_data(ClassLoaderData* loader_data); #endif - -#if INCLUDE_TRACE - private: - static Ticks _class_unload_time; - static void class_unload_event(Klass* const k); -#endif }; // ClassLoaderData class @@ -213,6 +207,8 @@ static Metaspace* _ro_metaspace; static Metaspace* _rw_metaspace; + JFR_ONLY(DEFINE_TRACE_ID_FIELD;) + void set_next(ClassLoaderData* next) { _next = next; } ClassLoaderData* next() const { return _next; } @@ -223,11 +219,6 @@ Mutex* metaspace_lock() const { return _metaspace_lock; } - // GC interface. - void clear_claimed() { _claimed = 0; } - bool claimed() const { return _claimed == 1; } - bool claim(); - void unload(); bool keep_alive() const { return _keep_alive; } void classes_do(void f(Klass*)); @@ -242,6 +233,11 @@ public: + // GC interface. + void clear_claimed() { _claimed = 0; } + bool claimed() const { return _claimed == 1; } + bool claim(); + bool is_alive(BoolObjectClosure* is_alive_closure) const; // Accessors @@ -325,6 +321,8 @@ Metaspace* ro_metaspace(); Metaspace* rw_metaspace(); void initialize_shared_metaspaces(); + + JFR_ONLY(DEFINE_TRACE_ID_METHODS;) }; // An iterator that distributes Klasses to parallel worker threads.