RFR: 8256726: Zero: print proper message in ArrayIndexOutOfBoundException
Severin Gehwolf
sgehwolf at openjdk.java.net
Fri Nov 27 09:06:56 UTC 2020
On Fri, 20 Nov 2020 09:14:13 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
> Manifests on tier1 test:
>
> $ CONF=linux-x86_64-zero-fastdebug make run-test TEST=runtime/exceptionMsgs/ArrayIndexOutOfBoundsException/
> test ArrayIndexOutOfBoundsExceptionTest.testAIOOBMessages(): failure
> java.lang.AssertionError: expected [Index -5 out of bounds for length 0] but found [-5]
>
> Fix does similar thing to what `Runtime1::throw_range_check_exception` does, but using a safer `jio_snprintf`.
>
> Additional testing:
> - [x] AIOBB tests on Linux x86_64 Zero fastdebug
src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp line 1504:
> 1502: arrayOop arrObj = (arrayOop)STACK_OBJECT(arrayOff); \
> 1503: jint index = STACK_INT(arrayOff + 1); \
> 1504: char message[2 * jintAsStringSize + 35]; \
What's this magic `35` here? `strlen("Index A out of bounds for length B") + 1 == 35`. Isn't this counting the integers twice?
Consider adding a comment.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1341
More information about the hotspot-runtime-dev
mailing list