< prev index next >

src/hotspot/cpu/x86/templateTable_x86.cpp

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

*** 755,769 **** if (index != rbx) { // ??? convention: move aberrant index into rbx for exception message assert(rbx != array, "different registers"); __ movl(rbx, index); } ! __ jump_cc(Assembler::aboveEqual, ! ExternalAddress(Interpreter::_throw_ArrayIndexOutOfBoundsException_entry)); } - void TemplateTable::iaload() { transition(itos, itos); // rax: index // rdx: array index_check(rdx, rax); // kills rbx --- 755,772 ---- if (index != rbx) { // ??? convention: move aberrant index into rbx for exception message assert(rbx != array, "different registers"); __ movl(rbx, index); } ! Label skip; ! __ jccb(Assembler::below, skip); ! // Pass array to create more detailed exceptions. ! __ mov(NOT_LP64(rax) LP64_ONLY(c_rarg1), array); ! __ jump(ExternalAddress(Interpreter::_throw_ArrayIndexOutOfBoundsException_entry)); ! __ bind(skip); } void TemplateTable::iaload() { transition(itos, itos); // rax: index // rdx: array index_check(rdx, rax); // kills rbx
< prev index next >