RFR: 8367129: Move input validation checks to Java for java.lang.StringLatin1 intrinsics [v2]

Damon Fenacci dfenacci at openjdk.org
Fri Feb 13 13:43:04 UTC 2026


On Thu, 12 Feb 2026 16:09:45 GMT, Volkan Yazici <vyazici at openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/StringLatin1.java line 172:
>> 
>>> 170:         Objects.requireNonNull(other);
>>> 171:         String.checkOffset(len1, length(value));
>>> 172:         String.checkOffset(len2, length(other));
>> 
>> Are these additional checks? I'm asking because I was expecting them to "replace" intrinsics ones but couldn't find where/how (if so I'm also wondering why they were not there before: did all callers ensure that?).
>
>> Are these additional checks?
> 
> Yes. I'm exercising _"Always validate all input at the Java wrapper"_ stated in the parent issue [JDK-8156534].
> 
>> I'm asking because I was expecting them to "replace" intrinsics ones but couldn't find where/how
> 
> Note the Javadoc of `ArraysSupport#mismatch(byte[] a, byte[] b, int length)`:
> 
>     This method does not perform bounds checks. It is the responsibility
>     of the caller to perform such bounds checks before calling this method.
> 
> AFAICT, `ArraysSupport` should be updated to validate its inputs too. But that is for another day.
> 
>> I'm also wondering why they were not there before: did all callers ensure that?
> 
> Yes, pretty much accidentally.
> 
> [JDK-8156534]: https://bugs.openjdk.org/browse/JDK-8156534

Thanks for the clarification @vy. A bit scary if it was really accidental.
Anyway, C2 should fold the check if unnecessary but maybe a performance check before and after could be nice (just to be on the safe side).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28832#discussion_r2804280137


More information about the core-libs-dev mailing list