< prev index next >

src/hotspot/cpu/x86/templateTable_x86.cpp

Print this page
rev 49827 : 8201593: Print array length in ArrayIndexOutOfBoundsException.

@@ -755,12 +755,20 @@
   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));
+  Label skip;
+  __ jccb(Assembler::below, skip);
+  // Pass array to create more detailed exceptions.
+#ifdef IA32
+  __ mov(rax, array);
+#else // AMD64
+  __ mov(c_rarg1, array);
+#endif
+  __ jump(ExternalAddress(Interpreter::_throw_ArrayIndexOutOfBoundsException_entry));
+  __ bind(skip);
 }
 
 
 void TemplateTable::iaload() {
   transition(itos, itos);
< prev index next >