src/share/vm/classfile/classLoaderData.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/classfile

src/share/vm/classfile/classLoaderData.hpp

Print this page
rev 6132 : 8037970: make PrintMethodData a diagnostic options
Summary: make PrintMethodData a diagnostic options for performance investigation
Reviewed-by:


  61   friend class ClassLoaderDataGraphMetaspaceIterator;
  62   friend class VMStructs;
  63  private:
  64   // All CLDs (except the null CLD) can be reached by walking _head->_next->...
  65   static ClassLoaderData* _head;
  66   static ClassLoaderData* _unloading;
  67   // CMS support.
  68   static ClassLoaderData* _saved_head;
  69 
  70   static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS);
  71   static void post_class_unload_events(void);
  72  public:
  73   static ClassLoaderData* find_or_create(Handle class_loader, TRAPS);
  74   static void purge();
  75   static void clear_claimed_marks();
  76   static void oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim);
  77   static void always_strong_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim);
  78   static void keep_alive_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim);
  79   static void classes_do(KlassClosure* klass_closure);
  80   static void classes_do(void f(Klass* const));

  81   static void loaded_classes_do(KlassClosure* klass_closure);
  82   static void classes_unloading_do(void f(Klass* const));
  83   static bool do_unloading(BoolObjectClosure* is_alive);
  84 
  85   // CMS support.
  86   static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); }
  87   static GrowableArray<ClassLoaderData*>* new_clds();
  88 
  89   static void dump_on(outputStream * const out) PRODUCT_RETURN;
  90   static void dump() { dump_on(tty); }
  91   static void verify();
  92 
  93   // expensive test for pointer in metaspace for debugging
  94   static bool contains(const void* x);
  95 #ifndef PRODUCT
  96   static bool contains_loader_data(ClassLoaderData* loader_data);
  97 #endif
  98 
  99 #if INCLUDE_TRACE
 100  private:


 172   ~ClassLoaderData();
 173 
 174   void set_metaspace(Metaspace* m) { _metaspace = m; }
 175 
 176   JNIHandleBlock* handles() const;
 177   void set_handles(JNIHandleBlock* handles);
 178 
 179   Mutex* metaspace_lock() const { return _metaspace_lock; }
 180 
 181   // GC interface.
 182   void clear_claimed()          { _claimed = 0; }
 183   bool claimed() const          { return _claimed == 1; }
 184   bool claim();
 185 
 186   void unload();
 187   bool keep_alive() const       { return _keep_alive; }
 188   bool is_alive(BoolObjectClosure* is_alive_closure) const;
 189   void classes_do(void f(Klass*));
 190   void loaded_classes_do(KlassClosure* klass_closure);
 191   void classes_do(void f(InstanceKlass*));

 192 
 193   // Deallocate free list during class unloading.
 194   void free_deallocate_list();
 195 
 196   // Allocate out of this class loader data
 197   MetaWord* allocate(size_t size);
 198 
 199  public:
 200   // Accessors
 201   Metaspace* metaspace_or_null() const     { return _metaspace; }
 202 
 203   static ClassLoaderData* the_null_class_loader_data() {
 204     return _the_null_class_loader_data;
 205   }
 206 
 207   bool is_anonymous() const { return _is_anonymous; }
 208 
 209   static void init_null_class_loader_data() {
 210     assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
 211     assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");




  61   friend class ClassLoaderDataGraphMetaspaceIterator;
  62   friend class VMStructs;
  63  private:
  64   // All CLDs (except the null CLD) can be reached by walking _head->_next->...
  65   static ClassLoaderData* _head;
  66   static ClassLoaderData* _unloading;
  67   // CMS support.
  68   static ClassLoaderData* _saved_head;
  69 
  70   static ClassLoaderData* add(Handle class_loader, bool anonymous, TRAPS);
  71   static void post_class_unload_events(void);
  72  public:
  73   static ClassLoaderData* find_or_create(Handle class_loader, TRAPS);
  74   static void purge();
  75   static void clear_claimed_marks();
  76   static void oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim);
  77   static void always_strong_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim);
  78   static void keep_alive_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim);
  79   static void classes_do(KlassClosure* klass_closure);
  80   static void classes_do(void f(Klass* const));
  81   static void methods_do(void f(Method*));
  82   static void loaded_classes_do(KlassClosure* klass_closure);
  83   static void classes_unloading_do(void f(Klass* const));
  84   static bool do_unloading(BoolObjectClosure* is_alive);
  85 
  86   // CMS support.
  87   static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); }
  88   static GrowableArray<ClassLoaderData*>* new_clds();
  89 
  90   static void dump_on(outputStream * const out) PRODUCT_RETURN;
  91   static void dump() { dump_on(tty); }
  92   static void verify();
  93 
  94   // expensive test for pointer in metaspace for debugging
  95   static bool contains(const void* x);
  96 #ifndef PRODUCT
  97   static bool contains_loader_data(ClassLoaderData* loader_data);
  98 #endif
  99 
 100 #if INCLUDE_TRACE
 101  private:


 173   ~ClassLoaderData();
 174 
 175   void set_metaspace(Metaspace* m) { _metaspace = m; }
 176 
 177   JNIHandleBlock* handles() const;
 178   void set_handles(JNIHandleBlock* handles);
 179 
 180   Mutex* metaspace_lock() const { return _metaspace_lock; }
 181 
 182   // GC interface.
 183   void clear_claimed()          { _claimed = 0; }
 184   bool claimed() const          { return _claimed == 1; }
 185   bool claim();
 186 
 187   void unload();
 188   bool keep_alive() const       { return _keep_alive; }
 189   bool is_alive(BoolObjectClosure* is_alive_closure) const;
 190   void classes_do(void f(Klass*));
 191   void loaded_classes_do(KlassClosure* klass_closure);
 192   void classes_do(void f(InstanceKlass*));
 193   void methods_do(void f(Method*));
 194   
 195   // Deallocate free list during class unloading.
 196   void free_deallocate_list();
 197 
 198   // Allocate out of this class loader data
 199   MetaWord* allocate(size_t size);
 200 
 201  public:
 202   // Accessors
 203   Metaspace* metaspace_or_null() const     { return _metaspace; }
 204 
 205   static ClassLoaderData* the_null_class_loader_data() {
 206     return _the_null_class_loader_data;
 207   }
 208 
 209   bool is_anonymous() const { return _is_anonymous; }
 210 
 211   static void init_null_class_loader_data() {
 212     assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
 213     assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");


src/share/vm/classfile/classLoaderData.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File