RFR: 8361842: Validate input in both Java and C++ for java.lang.StringCoding intrinsics
Volkan Yazici
vyazici at openjdk.org
Thu Jul 10 12:58:56 UTC 2025
On Fri, 27 Jun 2025 13:24:52 GMT, Chen Liang <liach at openjdk.org> wrote:
>> But the original code already checks for `len >= 0`, right? See `LibraryCallKit::inline_countPositives` -> `generate_string_range_check` -> `// Offset and count must not be negative`
>>
>> This PR is about moving the range checks from the intrinsics into the Java wrappers. Removing range checks is out of the scope and should be carefully evaluated on a case-by-case basis separately.
>
> My point is this is a performance-sensitive API. We are using a known-slow check method `checkFromIndexSize` which may introduce a performance regression.
@liach, thanks for sharing your feedback on this draft, much appreciated. 🙇 In order to address your (rightful) concerns (which I also share) regarding the performance impact, in 196fc5d, I've added `StringCodingCountPositives` JMH benchmark and produced the following results:
*OS:* Ubuntu 24.04.2
*CPU:* Intel Core Ultra 9 185H x 22
Mode Cnt Score Error Units
avgt 10 8.617 ± 0.646 ns/op # 149882416a9 (strIntrinCheck)
avgt 10 8.787 ± 0.313 ns/op # 5a1301df195 (master)
AFAICT, (even though the patched version appears to be performing better 😛) the scores do match. Note that I will run the entire `test/micro/org/openjdk/bench/java/lang/String*.java` suite on various platforms and make sure there are no (visible?) performance regressions, before promoting this draft to a PR.
Let me know if this addresses your concerns and if there is anything else I can do to better assess the performance impact.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25998#discussion_r2185582087
More information about the core-libs-dev
mailing list