RFR: 8364007: Add no-argument codePointCount method to CharSequence and String [v14]
Chen Liang
liach at openjdk.org
Thu Jan 29 23:20:12 UTC 2026
On Thu, 29 Jan 2026 22:21:41 GMT, Chen Liang <liach at openjdk.org> wrote:
>> Tatsunori Uchino has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 20 commits:
>>
>> - Merge remote-tracking branch 'origin/master' into codepoint-count
>> - Fix comments
>> - Don't use removed `Character::codePointCount` overload
>> - Update year in copyright
>> - Fix double empty lines
>> - Remove `Character.codePointCount()`
>> - Replace "unpaired surrogates" with "isolated surrogate code units"
>>
>> https://www.unicode.org/versions/Unicode17.0.0/core-spec/chapter-3/#G1654
>> https://www.unicode.org/charts/PDF/UDC00.pdf
>> - Remove `Character.codePointCount` overload
>> - Rename parameter names from `a` to `seq`
>>
>> `chars` is too confusing with `char`
>> - Improve JavaDoc
>>
>> Co-authored-by: Chen Liang <liach at openjdk.org>
>> - ... and 10 more: https://git.openjdk.org/jdk/compare/681e4ec8...198b3188
>
> src/java.base/share/classes/java/lang/AbstractStringBuilder.java line 542:
>
>> 540: return count;
>> 541: }
>> 542: return StringUTF16.codePointCount(value, 0, count);
>
> Suggestion:
>
> return StringUTF16.codePointCountSB(value, 0, count);
>
> In buggy user program that use StringBuilder from more than one threads, we can have `value.length < count`, so we must perform this call checked.
>
> I think we need a new entry for this method in `test/jdk/java/lang/StringBuilder/StressSBTest.java` too.
This should be sufficient for StressSBTest:
diff --git a/test/jdk/java/lang/StringBuilder/StressSBTest.java b/test/jdk/java/lang/StringBuilder/StressSBTest.java
index a5dc6672f07..6219851ee3b 100644
--- a/test/jdk/java/lang/StringBuilder/StressSBTest.java
+++ b/test/jdk/java/lang/StringBuilder/StressSBTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -279,6 +279,7 @@ private boolean invokeByMethodNameAndType(String name, MethodType mt, StringBuil
case "charAt(StringBuilder,int)char" -> sb.charAt(5);
case "codePointAt(StringBuilder,int)int" -> sb.codePointAt(4);
case "codePointBefore(StringBuilder,int)int" -> sb.codePointBefore(3);
+ case "codePointCount(StringBuilder)int" -> sb.codePointCount();
case "codePointCount(StringBuilder,int,int)int" -> sb.codePointCount(3, 9);
case "offsetByCodePoints(StringBuilder,int,int)int" -> sb.offsetByCodePoints(3, 7);
case "lastIndexOf(StringBuilder,String,int)int" -> sb.lastIndexOf("A", 45);
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26461#discussion_r2743920523
More information about the core-libs-dev
mailing list