On Sat, 31 Jan 2026 08:15:55 GMT, Tatsunori Uchino <[email protected]> wrote:
>> Adds `codePointCount()` overloads to `String`, `Character`,
>> `(Abstract)StringBuilder`, and `StringBuffer` to make it possible to
>> conveniently retrieve the length of a string as code points without extra
>> boundary checks.
>>
>>
>> if (superTremendouslyLongExpressionYieldingAString().codePointCount() >
>> limit) {
>> throw new Exception("exceeding length");
>> }
>>
>>
>> Is a CSR required to this change?
>
> Tatsunori Uchino has updated the pull request incrementally with one
> additional commit since the last revision:
>
> Add `codePointCount` for `CharBuffer`
src/java.base/share/classes/java/nio/X-Buffer.java.template line 2062:
> 2060: /**
> 2061: * {@return the number of Unicode code points in this character
> sequence}
> 2062: * Isolated surrogate code units count as one code point each.
I agree the override needs to be specified but it will need to be specified to
count the code points in the between the position (inclusive) and the limit
(exclusive).
src/java.base/share/classes/java/nio/X-Buffer.java.template line 2070:
> 2068: int lim = limit();
> 2069: int count = l;
> 2070: for (int i = position(); i < lim;) {
There will need to a robustness pass done on this override as the CharBuffer
may be backed by off-heap memory. Look at the existing overides to see examples
where it captures the limit and position once.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26461#discussion_r2749219147
PR Review Comment: https://git.openjdk.org/jdk/pull/26461#discussion_r2749219908