comparison src/share/vm/classfile/dictionary.cpp @ 8667:1f9994892f89

8008549: NPG: SystemDictionary::find(...) unnecessarily keeps class loaders alive Summary: SystemDictionary::find(...) should not create and register ClassLoaderData objects for class loaders. Reviewed-by: coleenp, acorn Contributed-by: Stefan Karlsson <stefan.karlsson@oracle.com>, Erik Helin <erik.helin@oracle.com>
author stefank
date Thu, 21 Feb 2013 17:22:15 +0100
parents 90273fc0a981
children d587a5c30bd8
comparison
equal deleted inserted replaced
8106:ec2eddfed950 8667:1f9994892f89
345 void Dictionary::add_klass(Symbol* class_name, ClassLoaderData* loader_data, 345 void Dictionary::add_klass(Symbol* class_name, ClassLoaderData* loader_data,
346 KlassHandle obj) { 346 KlassHandle obj) {
347 assert_locked_or_safepoint(SystemDictionary_lock); 347 assert_locked_or_safepoint(SystemDictionary_lock);
348 assert(obj() != NULL, "adding NULL obj"); 348 assert(obj() != NULL, "adding NULL obj");
349 assert(obj()->name() == class_name, "sanity check on name"); 349 assert(obj()->name() == class_name, "sanity check on name");
350 assert(loader_data != NULL, "Must be non-NULL");
350 351
351 unsigned int hash = compute_hash(class_name, loader_data); 352 unsigned int hash = compute_hash(class_name, loader_data);
352 int index = hash_to_index(hash); 353 int index = hash_to_index(hash);
353 DictionaryEntry* entry = new_entry(hash, obj(), loader_data); 354 DictionaryEntry* entry = new_entry(hash, obj(), loader_data);
354 add_entry(index, entry); 355 add_entry(index, entry);