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 {
|