197
198 private:
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 oop holder() const;
209
210 void classes_do(void f(Klass* const));
211
212 private:
213 bool keep_alive() const { return _keep_alive > 0; }
214
215 void loaded_classes_do(KlassClosure* klass_closure);
216 void classes_do(void f(InstanceKlass*));
217 void methods_do(void f(Method*));
218 void modules_do(void f(ModuleEntry*));
219 void packages_do(void f(PackageEntry*));
220
221 // Deallocate free list during class unloading.
222 void free_deallocate_list(); // for the classes that are not unloaded
223 void free_deallocate_list_C_heap_structures(); // for the classes that are unloaded
224
225 Dictionary* create_dictionary();
226
227 void demote_strong_roots();
228
229 void initialize_name(Handle class_loader);
230
231 public:
232 // GC interface.
233
234 // The "claim" is typically used to check if oops_do needs to be applied on
235 // the CLD or not. Most GCs only perform strong marking during the marking phase.
236 enum Claim {
|
197
198 private:
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 oop holder() const;
209
210 void classes_do(void f(Klass* const));
211
212 private:
213 bool keep_alive() const { return _keep_alive > 0; }
214
215 void loaded_classes_do(KlassClosure* klass_closure);
216 void classes_do(void f(InstanceKlass*));
217 void inline_classes_do(void f(InlineKlass*));
218 void methods_do(void f(Method*));
219 void modules_do(void f(ModuleEntry*));
220 void packages_do(void f(PackageEntry*));
221
222 // Deallocate free list during class unloading.
223 void free_deallocate_list(); // for the classes that are not unloaded
224 void free_deallocate_list_C_heap_structures(); // for the classes that are unloaded
225
226 Dictionary* create_dictionary();
227
228 void demote_strong_roots();
229
230 void initialize_name(Handle class_loader);
231
232 public:
233 // GC interface.
234
235 // The "claim" is typically used to check if oops_do needs to be applied on
236 // the CLD or not. Most GCs only perform strong marking during the marking phase.
237 enum Claim {
|