hotspot/src/share/vm/oops/methodOop.cpp
changeset 4571 80b553bddc26
parent 4094 1f424b2b2171
child 4581 e89fbd1bcb3d
equal deleted inserted replaced
4569:f372ea9e5ed4 4571:80b553bddc26
   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       }