< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page
rev 50282 : 8203881: Print errornous size in NegativeArraySizeException


 958     if (transitive_interfaces()->at(i) == k) {
 959       return true;
 960     }
 961   }
 962   return false;
 963 }
 964 
 965 bool InstanceKlass::is_same_or_direct_interface(Klass *k) const {
 966   // Verify direct super interface
 967   if (this == k) return true;
 968   assert(k->is_interface(), "should be an interface class");
 969   for (int i = 0; i < local_interfaces()->length(); i++) {
 970     if (local_interfaces()->at(i) == k) {
 971       return true;
 972     }
 973   }
 974   return false;
 975 }
 976 
 977 objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
 978   if (length < 0) THROW_0(vmSymbols::java_lang_NegativeArraySizeException());





 979   if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
 980     report_java_out_of_memory("Requested array size exceeds VM limit");
 981     JvmtiExport::post_array_size_exhausted();
 982     THROW_OOP_0(Universe::out_of_memory_error_array_size());
 983   }
 984   int size = objArrayOopDesc::object_size(length);
 985   Klass* ak = array_klass(n, CHECK_NULL);
 986   objArrayOop o =
 987     (objArrayOop)CollectedHeap::array_allocate(ak, size, length, CHECK_NULL);
 988   return o;
 989 }
 990 
 991 instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) {
 992   if (TraceFinalizerRegistration) {
 993     tty->print("Registered ");
 994     i->print_value_on(tty);
 995     tty->print_cr(" (" INTPTR_FORMAT ") as finalizable", p2i(i));
 996   }
 997   instanceHandle h_i(THREAD, i);
 998   // Pass the handle as argument, JavaCalls::call expects oop as jobjects




 958     if (transitive_interfaces()->at(i) == k) {
 959       return true;
 960     }
 961   }
 962   return false;
 963 }
 964 
 965 bool InstanceKlass::is_same_or_direct_interface(Klass *k) const {
 966   // Verify direct super interface
 967   if (this == k) return true;
 968   assert(k->is_interface(), "should be an interface class");
 969   for (int i = 0; i < local_interfaces()->length(); i++) {
 970     if (local_interfaces()->at(i) == k) {
 971       return true;
 972     }
 973   }
 974   return false;
 975 }
 976 
 977 objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
 978   if (length < 0)  {
 979     ResourceMark rm(THREAD);
 980     stringStream ss;
 981     ss.print("%d", length);
 982     THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), ss.as_string());
 983   }
 984   if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
 985     report_java_out_of_memory("Requested array size exceeds VM limit");
 986     JvmtiExport::post_array_size_exhausted();
 987     THROW_OOP_0(Universe::out_of_memory_error_array_size());
 988   }
 989   int size = objArrayOopDesc::object_size(length);
 990   Klass* ak = array_klass(n, CHECK_NULL);
 991   objArrayOop o =
 992     (objArrayOop)CollectedHeap::array_allocate(ak, size, length, CHECK_NULL);
 993   return o;
 994 }
 995 
 996 instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) {
 997   if (TraceFinalizerRegistration) {
 998     tty->print("Registered ");
 999     i->print_value_on(tty);
1000     tty->print_cr(" (" INTPTR_FORMAT ") as finalizable", p2i(i));
1001   }
1002   instanceHandle h_i(THREAD, i);
1003   // Pass the handle as argument, JavaCalls::call expects oop as jobjects


< prev index next >