267 // Note that this is only safe after the GC has computed if the CLD is 268 // unloading or not. In concurrent contexts where there are no such 269 // guarantees, is_alive() should be used instead. 270 bool is_unloading() const { 271 assert(!(is_the_null_class_loader_data() && _unloading), "The null class loader can never be unloaded"); 272 return _unloading; 273 } 274 275 // Used to refcount a non-strong hidden class's or unsafe anonymous class's CLD in order to 276 // indicate their aliveness. 277 void inc_keep_alive(); 278 void dec_keep_alive(); 279 280 void initialize_holder(Handle holder); 281 282 void oops_do(OopClosure* f, int claim_value, bool clear_modified_oops = false); 283 284 void classes_do(KlassClosure* klass_closure); 285 Klass* klasses() { return _klasses; } 286 287 JNIMethodBlock* jmethod_ids() const { return _jmethod_ids; } 288 void set_jmethod_ids(JNIMethodBlock* new_block) { _jmethod_ids = new_block; } 289 290 void print() const; 291 void print_on(outputStream* out) const PRODUCT_RETURN; 292 void print_value() const; 293 void print_value_on(outputStream* out) const; 294 void verify(); 295 296 OopHandle add_handle(Handle h); 297 void remove_handle(OopHandle h); 298 void init_handle_locked(OopHandle& pd, Handle h); // used for concurrent access to ModuleEntry::_pd field 299 void add_class(Klass* k, bool publicize = true); 300 void remove_class(Klass* k); 301 bool contains_klass(Klass* k); 302 void record_dependency(const Klass* to); 303 PackageEntryTable* packages() { return _packages; } 304 ModuleEntry* unnamed_module() { return _unnamed_module; } 305 ModuleEntryTable* modules(); 306 bool modules_defined() { return (_modules != NULL); } | 267 // Note that this is only safe after the GC has computed if the CLD is 268 // unloading or not. In concurrent contexts where there are no such 269 // guarantees, is_alive() should be used instead. 270 bool is_unloading() const { 271 assert(!(is_the_null_class_loader_data() && _unloading), "The null class loader can never be unloaded"); 272 return _unloading; 273 } 274 275 // Used to refcount a non-strong hidden class's or unsafe anonymous class's CLD in order to 276 // indicate their aliveness. 277 void inc_keep_alive(); 278 void dec_keep_alive(); 279 280 void initialize_holder(Handle holder); 281 282 void oops_do(OopClosure* f, int claim_value, bool clear_modified_oops = false); 283 284 void classes_do(KlassClosure* klass_closure); 285 Klass* klasses() { return _klasses; } 286 287 // replace the existing class with k, return the old class. 288 InstanceKlass* replace_class(Symbol* class_name, InstanceKlass* k); 289 290 JNIMethodBlock* jmethod_ids() const { return _jmethod_ids; } 291 void set_jmethod_ids(JNIMethodBlock* new_block) { _jmethod_ids = new_block; } 292 293 void print() const; 294 void print_on(outputStream* out) const PRODUCT_RETURN; 295 void print_value() const; 296 void print_value_on(outputStream* out) const; 297 void verify(); 298 299 OopHandle add_handle(Handle h); 300 void remove_handle(OopHandle h); 301 void init_handle_locked(OopHandle& pd, Handle h); // used for concurrent access to ModuleEntry::_pd field 302 void add_class(Klass* k, bool publicize = true); 303 void remove_class(Klass* k); 304 bool contains_klass(Klass* k); 305 void record_dependency(const Klass* to); 306 PackageEntryTable* packages() { return _packages; } 307 ModuleEntry* unnamed_module() { return _unnamed_module; } 308 ModuleEntryTable* modules(); 309 bool modules_defined() { return (_modules != NULL); } |