src/share/vm/interpreter/interpreterRuntime.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/interpreter/interpreterRuntime.cpp Fri Jun 16 14:34:20 2017
--- new/src/share/vm/interpreter/interpreterRuntime.cpp Fri Jun 16 14:34:20 2017
*** 394,403 ****
--- 394,407 ----
IRT_END
IRT_ENTRY(void, InterpreterRuntime::value_array_store(JavaThread* thread, arrayOopDesc* array, int index, void* val))
Klass* klass = array->klass();
assert(klass->is_valueArray_klass() || klass->is_objArray_klass(), "expected value or object array oop");
+
+ if (ArrayKlass::cast(klass)->element_klass() != ((oop)val)->klass()) {
+ THROW(vmSymbols::java_lang_ArrayStoreException());
+ }
if (klass->is_objArray_klass()) {
((objArrayOop) array)->obj_at_put(index, (oop)val);
}
else {
valueArrayOop varray = (valueArrayOop)array;
src/share/vm/interpreter/interpreterRuntime.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File