< prev index next >

src/hotspot/share/runtime/reflection.cpp

Print this page

        

*** 342,352 **** } else { Klass* k = java_lang_Class::as_Klass(element_mirror); if (k->is_array_klass() && ArrayKlass::cast(k)->dimension() >= MAX_DIM) { THROW_0(vmSymbols::java_lang_IllegalArgumentException()); } ! return oopFactory::new_array(k, length, THREAD); } } arrayOop Reflection::reflect_new_multi_array(oop element_mirror, typeArrayOop dim_array, TRAPS) { --- 342,356 ---- } else { Klass* k = java_lang_Class::as_Klass(element_mirror); if (k->is_array_klass() && ArrayKlass::cast(k)->dimension() >= MAX_DIM) { THROW_0(vmSymbols::java_lang_IllegalArgumentException()); } ! if (java_lang_Class::is_box_type(element_mirror)) { ! return oopFactory::new_objArray(k, length, THREAD); ! } else { ! return oopFactory::new_valueArray(k, length, THREAD); ! } } } arrayOop Reflection::reflect_new_multi_array(oop element_mirror, typeArrayOop dim_array, TRAPS) {
*** 383,393 **** THROW_0(vmSymbols::java_lang_IllegalArgumentException()); } dim += k_dim; } } ! klass = klass->array_klass(dim, CHECK_NULL); oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, CHECK_NULL); assert(obj->is_array(), "just checking"); return arrayOop(obj); } --- 387,398 ---- THROW_0(vmSymbols::java_lang_IllegalArgumentException()); } dim += k_dim; } } ! ArrayStorageProperties storage_props = FieldType::get_array_storage_properties(klass->name()); ! klass = klass->array_klass(storage_props, dim, CHECK_NULL); oop obj = ArrayKlass::cast(klass)->multi_allocate(len, dimensions, CHECK_NULL); assert(obj->is_array(), "just checking"); return arrayOop(obj); }
< prev index next >