RFR: 8256726: Zero: print proper message in ArrayIndexOutOfBoundException [v2]
Aleksey Shipilev
shade at openjdk.java.net
Fri Nov 27 09:21:19 UTC 2020
On Fri, 27 Nov 2020 09:07:47 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> 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.
>
> Seems OK to overestimate a bit. That's what `Runtime1::throw_range_check_exception` does in C1, so I have not challenged it:
> https://github.com/openjdk/jdk/blob/2f06893a29fba3b40cc1cf03095b75b217d1bb93/src/hotspot/share/c1/c1_Runtime1.cpp#L668-L671
>
> It should count the integers twice, because there are two integers in the string.
Well, fine, I'll count them exactly and `STATIC_ASSERT` it ;)
-------------
PR: https://git.openjdk.java.net/jdk/pull/1341
More information about the hotspot-runtime-dev
mailing list