231 if (throw_error) {
232 THROW_MSG_NULL(vmSymbols::java_lang_NoClassDefFoundError(), class_name->as_C_string());
233 } else {
234 THROW_MSG_NULL(vmSymbols::java_lang_ClassNotFoundException(), class_name->as_C_string());
235 }
236 }
237 return klass;
238 }
239
240
241 Klass* SystemDictionary::resolve_or_fail(Symbol* class_name,
242 bool throw_error, TRAPS)
243 {
244 return resolve_or_fail(class_name, Handle(), Handle(), throw_error, THREAD);
245 }
246
247
248 // Forwards to resolve_instance_class_or_null
249
250 Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) {
251 assert(THREAD->can_call_java(),
252 "can not load classes with compiler thread: class=%s, classloader=%s",
253 class_name->as_C_string(),
254 class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string());
255 if (FieldType::is_array(class_name)) {
256 return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
257 } else if (FieldType::is_obj(class_name)) {
258 ResourceMark rm(THREAD);
259 // Ignore wrapping L and ;.
260 TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
261 class_name->utf8_length() - 2, CHECK_NULL);
262 return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
263 } else {
264 return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
265 }
266 }
267
268 Klass* SystemDictionary::resolve_or_null(Symbol* class_name, TRAPS) {
269 return resolve_or_null(class_name, Handle(), Handle(), THREAD);
270 }
|
231 if (throw_error) {
232 THROW_MSG_NULL(vmSymbols::java_lang_NoClassDefFoundError(), class_name->as_C_string());
233 } else {
234 THROW_MSG_NULL(vmSymbols::java_lang_ClassNotFoundException(), class_name->as_C_string());
235 }
236 }
237 return klass;
238 }
239
240
241 Klass* SystemDictionary::resolve_or_fail(Symbol* class_name,
242 bool throw_error, TRAPS)
243 {
244 return resolve_or_fail(class_name, Handle(), Handle(), throw_error, THREAD);
245 }
246
247
248 // Forwards to resolve_instance_class_or_null
249
250 Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) {
251 assert (class_name != NULL, "");
252 assert(THREAD->can_call_java(),
253 "can not load classes with compiler thread: class=%s, classloader=%s",
254 class_name->as_C_string(),
255 class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string());
256 if (FieldType::is_array(class_name)) {
257 return resolve_array_class_or_null(class_name, class_loader, protection_domain, THREAD);
258 } else if (FieldType::is_obj(class_name)) {
259 ResourceMark rm(THREAD);
260 // Ignore wrapping L and ;.
261 TempNewSymbol name = SymbolTable::new_symbol(class_name->as_C_string() + 1,
262 class_name->utf8_length() - 2, CHECK_NULL);
263 return resolve_instance_class_or_null(name, class_loader, protection_domain, THREAD);
264 } else {
265 return resolve_instance_class_or_null(class_name, class_loader, protection_domain, THREAD);
266 }
267 }
268
269 Klass* SystemDictionary::resolve_or_null(Symbol* class_name, TRAPS) {
270 return resolve_or_null(class_name, Handle(), Handle(), THREAD);
271 }
|