Mercurial > hg > truffle
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); |