src/share/vm/classfile/classLoaderData.hpp

Print this page
rev 12364 : 8170672: Event-based tracing to support classloader instances
Reviewed-by:

*** 28,37 **** --- 28,38 ---- #include "memory/allocation.hpp" #include "memory/memRegion.hpp" #include "memory/metaspace.hpp" #include "memory/metaspaceCounters.hpp" #include "runtime/mutex.hpp" + #include "trace/traceMacros.hpp" #include "utilities/growableArray.hpp" #include "utilities/macros.hpp" #if INCLUDE_TRACE #include "utilities/ticks.hpp" #endif
*** 76,96 **** // OOM has been seen in metaspace allocation. Used to prevent some // allocations until class unloading static bool _metaspace_oom; static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS); ! static void post_class_unload_events(void); public: static ClassLoaderData* find_or_create(Handle class_loader, TRAPS); static void purge(); static void clear_claimed_marks(); // oops do static void oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim); static void keep_alive_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim); static void always_strong_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim); // cld do static void cld_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); // klass do static void classes_do(KlassClosure* klass_closure); --- 77,98 ---- // OOM has been seen in metaspace allocation. Used to prevent some // allocations until class unloading static bool _metaspace_oom; static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS); ! static void post_class_unload_events(); public: static ClassLoaderData* find_or_create(Handle class_loader, TRAPS); static void purge(); static void clear_claimed_marks(); // oops do static void oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim); static void keep_alive_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim); 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); // klass do static void classes_do(KlassClosure* klass_closure);
*** 208,217 **** --- 210,221 ---- // ReadOnly and ReadWrite metaspaces (static because only on the null // class loader for now). static Metaspace* _ro_metaspace; static Metaspace* _rw_metaspace; + TRACE_DEFINE_TRACE_ID_FIELD; + void set_next(ClassLoaderData* next) { _next = next; } ClassLoaderData* next() const { return _next; } ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies); ~ClassLoaderData();
*** 340,349 **** --- 344,355 ---- void set_shared_class_loader_id(int id) { assert(id >= 0, "sanity"); assert(_shared_class_loader_id <0, "cannot be assigned more than once"); _shared_class_loader_id = id; } + + TRACE_DEFINE_TRACE_ID_METHODS; }; // An iterator that distributes Klasses to parallel worker threads. class ClassLoaderDataGraphKlassIteratorAtomic : public StackObj { Klass* volatile _next_klass;