< prev index next >

src/hotspot/share/classfile/classLoaderData.hpp

Print this page

193   ~ClassLoaderData();
194 
195   // The CLD are not placed in the Heap, so the Card Table or
196   // the Mod Union Table can't be used to mark when CLD have modified oops.
197   // The CT and MUT bits saves this information for the whole class loader data.
198   void clear_modified_oops()             { _modified_oops = false; }
199  public:
200   void record_modified_oops()            { _modified_oops = true; }
201   bool has_modified_oops()               { return _modified_oops; }
202 
203   oop holder_no_keepalive() const;
204   oop holder() const;
205 
206  private:
207   void unload();
208   bool keep_alive() const       { return _keep_alive > 0; }
209 
210   void classes_do(void f(Klass* const));
211   void loaded_classes_do(KlassClosure* klass_closure);
212   void classes_do(void f(InstanceKlass*));

213   void methods_do(void f(Method*));
214   void modules_do(void f(ModuleEntry*));
215   void packages_do(void f(PackageEntry*));
216 
217   // Deallocate free list during class unloading.
218   void free_deallocate_list();                      // for the classes that are not unloaded
219   void free_deallocate_list_C_heap_structures();    // for the classes that are unloaded
220 
221   Dictionary* create_dictionary();
222 
223   void demote_strong_roots();
224 
225   void initialize_name(Handle class_loader);
226 
227  public:
228   // GC interface.
229 
230   // The "claim" is typically used to check if oops_do needs to be applied on
231   // the CLD or not. Most GCs only perform strong marking during the marking phase.
232   enum Claim {

193   ~ClassLoaderData();
194 
195   // The CLD are not placed in the Heap, so the Card Table or
196   // the Mod Union Table can't be used to mark when CLD have modified oops.
197   // The CT and MUT bits saves this information for the whole class loader data.
198   void clear_modified_oops()             { _modified_oops = false; }
199  public:
200   void record_modified_oops()            { _modified_oops = true; }
201   bool has_modified_oops()               { return _modified_oops; }
202 
203   oop holder_no_keepalive() const;
204   oop holder() const;
205 
206  private:
207   void unload();
208   bool keep_alive() const       { return _keep_alive > 0; }
209 
210   void classes_do(void f(Klass* const));
211   void loaded_classes_do(KlassClosure* klass_closure);
212   void classes_do(void f(InstanceKlass*));
213   void inline_classes_do(void f(InlineKlass*));
214   void methods_do(void f(Method*));
215   void modules_do(void f(ModuleEntry*));
216   void packages_do(void f(PackageEntry*));
217 
218   // Deallocate free list during class unloading.
219   void free_deallocate_list();                      // for the classes that are not unloaded
220   void free_deallocate_list_C_heap_structures();    // for the classes that are unloaded
221 
222   Dictionary* create_dictionary();
223 
224   void demote_strong_roots();
225 
226   void initialize_name(Handle class_loader);
227 
228  public:
229   // GC interface.
230 
231   // The "claim" is typically used to check if oops_do needs to be applied on
232   // the CLD or not. Most GCs only perform strong marking during the marking phase.
233   enum Claim {
< prev index next >