src/hotspot/share/runtime/reflection.cpp
changeset 50304 d5331b94f821
parent 49982 9042ffe5b7fe
child 50735 2f2af62dfac7
equal deleted inserted replaced
50303:7164c3bb55df 50304:d5331b94f821
   335 arrayOop Reflection::reflect_new_array(oop element_mirror, jint length, TRAPS) {
   335 arrayOop Reflection::reflect_new_array(oop element_mirror, jint length, TRAPS) {
   336   if (element_mirror == NULL) {
   336   if (element_mirror == NULL) {
   337     THROW_0(vmSymbols::java_lang_NullPointerException());
   337     THROW_0(vmSymbols::java_lang_NullPointerException());
   338   }
   338   }
   339   if (length < 0) {
   339   if (length < 0) {
   340     THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
   340     THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), err_msg("%d", length));
   341   }
   341   }
   342   if (java_lang_Class::is_primitive(element_mirror)) {
   342   if (java_lang_Class::is_primitive(element_mirror)) {
   343     Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
   343     Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
   344     return TypeArrayKlass::cast(tak)->allocate(length, THREAD);
   344     return TypeArrayKlass::cast(tak)->allocate(length, THREAD);
   345   } else {
   345   } else {
   367 
   367 
   368   jint dimensions[MAX_DIM];   // C array copy of intArrayOop
   368   jint dimensions[MAX_DIM];   // C array copy of intArrayOop
   369   for (int i = 0; i < len; i++) {
   369   for (int i = 0; i < len; i++) {
   370     int d = dim_array->int_at(i);
   370     int d = dim_array->int_at(i);
   371     if (d < 0) {
   371     if (d < 0) {
   372       THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
   372       THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), err_msg("%d", d));
   373     }
   373     }
   374     dimensions[i] = d;
   374     dimensions[i] = d;
   375   }
   375   }
   376 
   376 
   377   Klass* klass;
   377   Klass* klass;