On Fri, 27 Jun 2025 07:22:48 GMT, Tobias Hartmann <thartm...@openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/StringCoding.java line 93:
>> 
>>> 91:     public static int countPositives(byte[] ba, int off, int len) {
>>> 92:         Objects.requireNonNull(ba, "ba");
>>> 93:         Objects.checkFromIndexSize(off, len, ba.length);
>> 
>> I recall core libraries intentionally avoided this because of performance 
>> problems. Is it possible for us to say trust the `len` argument to be 
>> non-negative? That allows us to simplify this to `Objects.checkIndex(off, 
>> ba.length - len)`. See this usage in perf-sensitive FFM API: 
>> https://github.com/openjdk/jdk/blob/149882416a956dec728a964c150b826dd589908f/src/java.base/share/classes/jdk/internal/foreign/AbstractMemorySegmentImpl.java#L401
>
> 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.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25998#discussion_r2172044145

Reply via email to