RFR: 8012665: CharSequence.chars, CharSequence.codePoints

Martin Buchholz martinrb at google.com
Thu Apr 25 16:14:03 PDT 2013


I think core library code should write the slightly lower-level code for
performance

+                int cp = Character.codePointAt(CharSequence.this, cur);
+                cur += Character.charCount(cp);

int length = length();
if (cur == length) throw NSEE;
char c1 = charAt(cur++), c2;
if (!isHighSurrogate(c1) || cur == length || !isLowSurrogate(c2 =
charAt(cur))
  return c1;
cur++;
return toCodePoint(c1, c2);




On Thu, Apr 25, 2013 at 1:25 PM, Henry Jen <henry.jen at oracle.com> wrote:

> Hi,
>
> Please review two default methods add to CharSequence returns IntStream
> of char value or code point value.
>
> http://cr.openjdk.java.net/~henryjen/tl/8012665.0/webrev/
>
> The synchronization test is relieved so lambda and other synthetic
> method is not tested. If synchronization is needed for those two default
> methods, subclass should override the methods.
>
> With charAt and codePointAt properly synchronized, the default
> implementation is sufficient. However as noted, if the sequence is
> mutated while the stream is being read, the result is undefined.
>
> Cheers,
> Henry
>
>


More information about the lambda-dev mailing list