< prev index next >

src/hotspot/share/interpreter/interpreterRuntime.cpp

Print this page
rev 49887 : 8201593: Print array length in ArrayIndexOutOfBoundsException.
Reviewed-by: dholmes, mdoerr

*** 56,65 **** --- 56,66 ---- #include "runtime/frame.inline.hpp" #include "runtime/handles.inline.hpp" #include "runtime/icache.hpp" #include "runtime/interfaceSupport.inline.hpp" #include "runtime/java.hpp" + #include "runtime/javaCalls.hpp" #include "runtime/jfieldIDWorkaround.hpp" #include "runtime/osThread.hpp" #include "runtime/sharedRuntime.hpp" #include "runtime/stubRoutines.hpp" #include "runtime/synchronizer.hpp"
*** 444,464 **** // create exception, with klass name as detail message Handle exception = Exceptions::new_exception(thread, s, klass_name); thread->set_vm_result(exception()); IRT_END ! ! IRT_ENTRY(void, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException(JavaThread* thread, char* name, jint index)) ! char message[jintAsStringSize]; ! // lookup exception klass ! TempNewSymbol s = SymbolTable::new_symbol(name, CHECK); if (ProfileTraps) { note_trap(thread, Deoptimization::Reason_range_check, CHECK); } ! // create exception ! sprintf(message, "%d", index); ! THROW_MSG(s, message); IRT_END IRT_ENTRY(void, InterpreterRuntime::throw_ClassCastException( JavaThread* thread, oopDesc* obj)) --- 445,464 ---- // create exception, with klass name as detail message Handle exception = Exceptions::new_exception(thread, s, klass_name); thread->set_vm_result(exception()); IRT_END ! IRT_ENTRY(void, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException(JavaThread* thread, arrayOopDesc* a, jint index)) if (ProfileTraps) { note_trap(thread, Deoptimization::Reason_range_check, CHECK); } ! ! ResourceMark rm(thread); ! stringStream ss; ! ss.print("Index %d out-of-bounds for length %d.", index, a->length()); ! ! THROW_MSG(vmSymbols::java_lang_ArrayIndexOutOfBoundsException(), ss.as_string()); IRT_END IRT_ENTRY(void, InterpreterRuntime::throw_ClassCastException( JavaThread* thread, oopDesc* obj))
< prev index next >