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