equal
deleted
inserted
replaced
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 |