src/hotspot/share/classfile/systemDictionary.cpp
changeset 50735 2f2af62dfac7
parent 50634 c349d409262a
child 50771 9ca95539747d
equal deleted inserted replaced
50734:0828a0f6676b 50735:2f2af62dfac7
   243 
   243 
   244 
   244 
   245 // Forwards to resolve_instance_class_or_null
   245 // Forwards to resolve_instance_class_or_null
   246 
   246 
   247 Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) {
   247 Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) {
   248   assert(THREAD->can_call_java(),
       
   249          "can not load classes with compiler thread: class=%s, classloader=%s",
       
   250          class_name->as_C_string(),
       
   251          class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string());
       
   252   if (FieldType::is_array(class_name)) {
   248   if (FieldType::is_array(class_name)) {
   253     return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
   249     return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
   254   } else if (FieldType::is_obj(class_name)) {
   250   } else if (FieldType::is_obj(class_name)) {
   255     ResourceMark rm(THREAD);
   251     ResourceMark rm(THREAD);
   256     // Ignore wrapping L and ;.
   252     // Ignore wrapping L and ;.
   690   bool havesupername = false;
   686   bool havesupername = false;
   691   InstanceKlass* k = NULL;
   687   InstanceKlass* k = NULL;
   692   PlaceholderEntry* placeholder;
   688   PlaceholderEntry* placeholder;
   693   Symbol* superclassname = NULL;
   689   Symbol* superclassname = NULL;
   694 
   690 
       
   691   assert(THREAD->can_call_java(),
       
   692          "can not load classes with compiler thread: class=%s, classloader=%s",
       
   693          name->as_C_string(),
       
   694          class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string());
   695   {
   695   {
   696     MutexLocker mu(SystemDictionary_lock, THREAD);
   696     MutexLocker mu(SystemDictionary_lock, THREAD);
   697     InstanceKlass* check = find_class(d_hash, name, dictionary);
   697     InstanceKlass* check = find_class(d_hash, name, dictionary);
   698     if (check != NULL) {
   698     if (check != NULL) {
   699       // Klass is already loaded, so just return it
   699       // Klass is already loaded, so just return it