src/share/vm/oops/methodOop.cpp

changeset 1577
4ce7240d622c
parent 1474
987e948ebbc8
child 1587
cd37471eaecc
equal deleted inserted replaced
1575:1f6d42899c3a 1577:4ce7240d622c
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 }

mercurial