< prev index next >

src/hotspot/share/classfile/classLoaderData.hpp

Print this page

166   ~ClassLoaderData();
167 
168   // The CLD are not placed in the Heap, so the Card Table or
169   // the Mod Union Table can't be used to mark when CLD have modified oops.
170   // The CT and MUT bits saves this information for the whole class loader data.
171   void clear_modified_oops()             { _modified_oops = false; }
172  public:
173   void record_modified_oops()            { _modified_oops = true; }
174   bool has_modified_oops()               { return _modified_oops; }
175 
176   oop holder_no_keepalive() const;
177   oop holder_phantom() const;
178 
179  private:
180   void unload();
181   bool keep_alive() const       { return _keep_alive > 0; }
182 
183   void classes_do(void f(Klass* const));
184   void loaded_classes_do(KlassClosure* klass_closure);
185   void classes_do(void f(InstanceKlass*));

186   void methods_do(void f(Method*));
187   void modules_do(void f(ModuleEntry*));
188   void packages_do(void f(PackageEntry*));
189 
190   // Deallocate free list during class unloading.
191   void free_deallocate_list();                      // for the classes that are not unloaded
192   void free_deallocate_list_C_heap_structures();    // for the classes that are unloaded
193 
194   Dictionary* create_dictionary();
195 
196   void initialize_name(Handle class_loader);
197 
198  public:
199   // GC interface.
200 
201   // The "claim" is typically used to check if oops_do needs to be applied on
202   // the CLD or not. Most GCs only perform strong marking during the marking phase.
203   enum Claim {
204     _claim_none         = 0,
205     _claim_finalizable  = 2,

166   ~ClassLoaderData();
167 
168   // The CLD are not placed in the Heap, so the Card Table or
169   // the Mod Union Table can't be used to mark when CLD have modified oops.
170   // The CT and MUT bits saves this information for the whole class loader data.
171   void clear_modified_oops()             { _modified_oops = false; }
172  public:
173   void record_modified_oops()            { _modified_oops = true; }
174   bool has_modified_oops()               { return _modified_oops; }
175 
176   oop holder_no_keepalive() const;
177   oop holder_phantom() const;
178 
179  private:
180   void unload();
181   bool keep_alive() const       { return _keep_alive > 0; }
182 
183   void classes_do(void f(Klass* const));
184   void loaded_classes_do(KlassClosure* klass_closure);
185   void classes_do(void f(InstanceKlass*));
186   void inline_classes_do(void f(InlineKlass*));
187   void methods_do(void f(Method*));
188   void modules_do(void f(ModuleEntry*));
189   void packages_do(void f(PackageEntry*));
190 
191   // Deallocate free list during class unloading.
192   void free_deallocate_list();                      // for the classes that are not unloaded
193   void free_deallocate_list_C_heap_structures();    // for the classes that are unloaded
194 
195   Dictionary* create_dictionary();
196 
197   void initialize_name(Handle class_loader);
198 
199  public:
200   // GC interface.
201 
202   // The "claim" is typically used to check if oops_do needs to be applied on
203   // the CLD or not. Most GCs only perform strong marking during the marking phase.
204   enum Claim {
205     _claim_none         = 0,
206     _claim_finalizable  = 2,
< prev index next >