< 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 >