454 int length = this_oop->checked_exceptions_length(); |
454 int length = this_oop->checked_exceptions_length(); |
455 if (length == 0) { // common case |
455 if (length == 0) { // common case |
456 return objArrayHandle(THREAD, Universe::the_empty_class_klass_array()); |
456 return objArrayHandle(THREAD, Universe::the_empty_class_klass_array()); |
457 } else { |
457 } else { |
458 methodHandle h_this(THREAD, this_oop); |
458 methodHandle h_this(THREAD, this_oop); |
459 objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::class_klass(), length, CHECK_(objArrayHandle())); |
459 objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::Class_klass(), length, CHECK_(objArrayHandle())); |
460 objArrayHandle mirrors (THREAD, m_oop); |
460 objArrayHandle mirrors (THREAD, m_oop); |
461 for (int i = 0; i < length; i++) { |
461 for (int i = 0; i < length; i++) { |
462 CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe |
462 CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe |
463 klassOop k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle())); |
463 klassOop k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle())); |
464 assert(Klass::cast(k)->is_subclass_of(SystemDictionary::throwable_klass()), "invalid exception class"); |
464 assert(Klass::cast(k)->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class"); |
465 mirrors->obj_at_put(i, Klass::cast(k)->java_mirror()); |
465 mirrors->obj_at_put(i, Klass::cast(k)->java_mirror()); |
466 } |
466 } |
467 return mirrors; |
467 return mirrors; |
468 } |
468 } |
469 }; |
469 }; |
1030 klassOop klass = SystemDictionary::resolve_or_null(name, class_loader, |
1030 klassOop klass = SystemDictionary::resolve_or_null(name, class_loader, |
1031 protection_domain, THREAD); |
1031 protection_domain, THREAD); |
1032 // We are loading classes eagerly. If a ClassNotFoundException or |
1032 // We are loading classes eagerly. If a ClassNotFoundException or |
1033 // a LinkageError was generated, be sure to ignore it. |
1033 // a LinkageError was generated, be sure to ignore it. |
1034 if (HAS_PENDING_EXCEPTION) { |
1034 if (HAS_PENDING_EXCEPTION) { |
1035 if (PENDING_EXCEPTION->is_a(SystemDictionary::classNotFoundException_klass()) || |
1035 if (PENDING_EXCEPTION->is_a(SystemDictionary::ClassNotFoundException_klass()) || |
1036 PENDING_EXCEPTION->is_a(SystemDictionary::linkageError_klass())) { |
1036 PENDING_EXCEPTION->is_a(SystemDictionary::LinkageError_klass())) { |
1037 CLEAR_PENDING_EXCEPTION; |
1037 CLEAR_PENDING_EXCEPTION; |
1038 } else { |
1038 } else { |
1039 return false; |
1039 return false; |
1040 } |
1040 } |
1041 } |
1041 } |