< prev index next >

src/hotspot/share/classfile/classLoaderData.hpp

Print this page




 159   JFR_ONLY(DEFINE_TRACE_ID_FIELD;)
 160 
 161   void set_next(ClassLoaderData* next) { _next = next; }
 162   ClassLoaderData* next() const        { return _next; }
 163 
 164   ClassLoaderData(Handle h_class_loader, bool is_unsafe_anonymous);
 165   ~ClassLoaderData();
 166 
 167   // The CLD are not placed in the Heap, so the Card Table or
 168   // the Mod Union Table can't be used to mark when CLD have modified oops.
 169   // The CT and MUT bits saves this information for the whole class loader data.
 170   void clear_modified_oops()             { _modified_oops = false; }
 171  public:
 172   void record_modified_oops()            { _modified_oops = true; }
 173   bool has_modified_oops()               { return _modified_oops; }
 174 
 175   void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = true; }
 176   void clear_accumulated_modified_oops() { _accumulated_modified_oops = false; }
 177   bool has_accumulated_modified_oops()   { return _accumulated_modified_oops; }
 178   oop holder_no_keepalive() const;

 179 
 180  private:
 181   void unload();
 182   bool keep_alive() const       { return _keep_alive > 0; }
 183 
 184   oop holder_phantom() const;
 185   void classes_do(void f(Klass* const));
 186   void loaded_classes_do(KlassClosure* klass_closure);
 187   void classes_do(void f(InstanceKlass*));
 188   void methods_do(void f(Method*));
 189   void modules_do(void f(ModuleEntry*));
 190   void packages_do(void f(PackageEntry*));
 191 
 192   // Deallocate free list during class unloading.
 193   void free_deallocate_list();                      // for the classes that are not unloaded
 194   void free_deallocate_list_C_heap_structures();    // for the classes that are unloaded
 195 
 196   // Allocate out of this class loader data
 197   MetaWord* allocate(size_t size);
 198 
 199   Dictionary* create_dictionary();
 200 
 201   void initialize_name(Handle class_loader);
 202 
 203  public:
 204   // GC interface.




 159   JFR_ONLY(DEFINE_TRACE_ID_FIELD;)
 160 
 161   void set_next(ClassLoaderData* next) { _next = next; }
 162   ClassLoaderData* next() const        { return _next; }
 163 
 164   ClassLoaderData(Handle h_class_loader, bool is_unsafe_anonymous);
 165   ~ClassLoaderData();
 166 
 167   // The CLD are not placed in the Heap, so the Card Table or
 168   // the Mod Union Table can't be used to mark when CLD have modified oops.
 169   // The CT and MUT bits saves this information for the whole class loader data.
 170   void clear_modified_oops()             { _modified_oops = false; }
 171  public:
 172   void record_modified_oops()            { _modified_oops = true; }
 173   bool has_modified_oops()               { return _modified_oops; }
 174 
 175   void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = true; }
 176   void clear_accumulated_modified_oops() { _accumulated_modified_oops = false; }
 177   bool has_accumulated_modified_oops()   { return _accumulated_modified_oops; }
 178   oop holder_no_keepalive() const;
 179   oop holder_phantom() const;
 180 
 181  private:
 182   void unload();
 183   bool keep_alive() const       { return _keep_alive > 0; }
 184 

 185   void classes_do(void f(Klass* const));
 186   void loaded_classes_do(KlassClosure* klass_closure);
 187   void classes_do(void f(InstanceKlass*));
 188   void methods_do(void f(Method*));
 189   void modules_do(void f(ModuleEntry*));
 190   void packages_do(void f(PackageEntry*));
 191 
 192   // Deallocate free list during class unloading.
 193   void free_deallocate_list();                      // for the classes that are not unloaded
 194   void free_deallocate_list_C_heap_structures();    // for the classes that are unloaded
 195 
 196   // Allocate out of this class loader data
 197   MetaWord* allocate(size_t size);
 198 
 199   Dictionary* create_dictionary();
 200 
 201   void initialize_name(Handle class_loader);
 202 
 203  public:
 204   // GC interface.


< prev index next >