< prev index next >
src/hotspot/share/runtime/reflection.cpp
Print this page
rev 50282 : 8203881: Print errornous size in NegativeArraySizeException
*** 335,345 ****
arrayOop Reflection::reflect_new_array(oop element_mirror, jint length, TRAPS) {
if (element_mirror == NULL) {
THROW_0(vmSymbols::java_lang_NullPointerException());
}
if (length < 0) {
! THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
}
if (java_lang_Class::is_primitive(element_mirror)) {
Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
return TypeArrayKlass::cast(tak)->allocate(length, THREAD);
} else {
--- 335,348 ----
arrayOop Reflection::reflect_new_array(oop element_mirror, jint length, TRAPS) {
if (element_mirror == NULL) {
THROW_0(vmSymbols::java_lang_NullPointerException());
}
if (length < 0) {
! ResourceMark rm(THREAD);
! stringStream ss;
! ss.print("%d", length);
! THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), ss.as_string());
}
if (java_lang_Class::is_primitive(element_mirror)) {
Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
return TypeArrayKlass::cast(tak)->allocate(length, THREAD);
} else {
*** 367,377 ****
jint dimensions[MAX_DIM]; // C array copy of intArrayOop
for (int i = 0; i < len; i++) {
int d = dim_array->int_at(i);
if (d < 0) {
! THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
}
dimensions[i] = d;
}
Klass* klass;
--- 370,383 ----
jint dimensions[MAX_DIM]; // C array copy of intArrayOop
for (int i = 0; i < len; i++) {
int d = dim_array->int_at(i);
if (d < 0) {
! ResourceMark rm(THREAD);
! stringStream ss;
! ss.print("%d", d);
! THROW_MSG_0(vmSymbols::java_lang_NegativeArraySizeException(), ss.as_string());
}
dimensions[i] = d;
}
Klass* klass;
< prev index next >