< prev index next >

src/hotspot/share/classfile/classLoaderData.hpp

Print this page




 275   ClassLoaderData* next() const        { return _next; }
 276 
 277   ClassLoaderData(Handle h_class_loader, bool is_anonymous);
 278   ~ClassLoaderData();
 279 
 280   // The CLD are not placed in the Heap, so the Card Table or
 281   // the Mod Union Table can't be used to mark when CLD have modified oops.
 282   // The CT and MUT bits saves this information for the whole class loader data.
 283   void clear_modified_oops()             { _modified_oops = false; }
 284  public:
 285   void record_modified_oops()            { _modified_oops = true; }
 286   bool has_modified_oops()               { return _modified_oops; }
 287 
 288   void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = true; }
 289   void clear_accumulated_modified_oops() { _accumulated_modified_oops = false; }
 290   bool has_accumulated_modified_oops()   { return _accumulated_modified_oops; }
 291  private:
 292 
 293   void unload();
 294   bool keep_alive() const       { return _keep_alive > 0; }

 295   void classes_do(void f(Klass*));
 296   void loaded_classes_do(KlassClosure* klass_closure);
 297   void classes_do(void f(InstanceKlass*));
 298   void methods_do(void f(Method*));
 299   void modules_do(void f(ModuleEntry*));
 300   void packages_do(void f(PackageEntry*));
 301 
 302   // Deallocate free list during class unloading.
 303   void free_deallocate_list();      // for the classes that are not unloaded
 304   void unload_deallocate_list();    // for the classes that are unloaded
 305 
 306   // Allocate out of this class loader data
 307   MetaWord* allocate(size_t size);
 308 
 309   Dictionary* create_dictionary();
 310  public:
 311   // GC interface.
 312   void clear_claimed() { _claimed = 0; }
 313   bool claimed() const { return _claimed == 1; }
 314   bool claim();




 275   ClassLoaderData* next() const        { return _next; }
 276 
 277   ClassLoaderData(Handle h_class_loader, bool is_anonymous);
 278   ~ClassLoaderData();
 279 
 280   // The CLD are not placed in the Heap, so the Card Table or
 281   // the Mod Union Table can't be used to mark when CLD have modified oops.
 282   // The CT and MUT bits saves this information for the whole class loader data.
 283   void clear_modified_oops()             { _modified_oops = false; }
 284  public:
 285   void record_modified_oops()            { _modified_oops = true; }
 286   bool has_modified_oops()               { return _modified_oops; }
 287 
 288   void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = true; }
 289   void clear_accumulated_modified_oops() { _accumulated_modified_oops = false; }
 290   bool has_accumulated_modified_oops()   { return _accumulated_modified_oops; }
 291  private:
 292 
 293   void unload();
 294   bool keep_alive() const       { return _keep_alive > 0; }
 295   void ensure_loader_alive();
 296   void classes_do(void f(Klass*));
 297   void loaded_classes_do(KlassClosure* klass_closure);
 298   void classes_do(void f(InstanceKlass*));
 299   void methods_do(void f(Method*));
 300   void modules_do(void f(ModuleEntry*));
 301   void packages_do(void f(PackageEntry*));
 302 
 303   // Deallocate free list during class unloading.
 304   void free_deallocate_list();      // for the classes that are not unloaded
 305   void unload_deallocate_list();    // for the classes that are unloaded
 306 
 307   // Allocate out of this class loader data
 308   MetaWord* allocate(size_t size);
 309 
 310   Dictionary* create_dictionary();
 311  public:
 312   // GC interface.
 313   void clear_claimed() { _claimed = 0; }
 314   bool claimed() const { return _claimed == 1; }
 315   bool claim();


< prev index next >