On 17/09/2026 10:53, Chunhui Liu wrote:
Hi team:
Recently, we noticed that there are hundreds
of ArrayIndexOutOfBoundsExceptions (and deoptimization events) have been
thrown by `HttpParser.readHostIPv4`. It can be reproduced with the
following test case:
```java
@Test
void debugStandardIpv4_isNumericOnEof() throws IOException {
HttpParser.readHostIPv4(new StringReader("127.0.0.1"), false);
}
```
The method does not throws the exception directly, but rather swallows it
inside `isNumeric` through the following steps:
1. All characters are read, reaching EOF and returning -1;
2. The `isNumeric` check is performed before the `-1` check;
3. `-1` triggers an ArrayIndexOutOfBoundsException inside isNumeric;
[image: image.png]
[image: image.png]
So my question is:
1. Should the `-1` branch be placed before the `isNumeric` branch? or is
there another reason for the current implementation?
2. Should check `0 < c < ARRAY_SIZE`?
Option 1 is the better choice.
Not option 2 since those methods are deliberately designed to be as fast
as possible for valid input.
PRs welcome.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]