< prev index next >

src/hotspot/share/classfile/classLoaderData.hpp

Print this page

199   // The CLD are not placed in the Heap, so the Card Table or
200   // the Mod Union Table can't be used to mark when CLD have modified oops.
201   // The CT and MUT bits saves this information for the whole class loader data.
202   void clear_modified_oops()             { _modified_oops = false; }
203  public:
204   void record_modified_oops()            { _modified_oops = true; }
205   bool has_modified_oops()               { return _modified_oops; }
206 
207   oop holder_no_keepalive() const;
208   // Resolving the holder keeps this CLD alive for the current GC cycle.
209   oop holder() const;
210   void keep_alive() const { (void)holder(); }
211 
212   void classes_do(void f(Klass* const));
213 
214  private:
215   int keep_alive_ref_count() const { return _keep_alive_ref_count; }
216 
217   void loaded_classes_do(KlassClosure* klass_closure);
218   void classes_do(void f(InstanceKlass*));

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

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