RFR: 8012665: CharSequence.chars, CharSequence.codePoints
Henry Jen
henry.jen at oracle.com
Mon Apr 29 16:47:57 UTC 2013
Hi Martin,
Thanks for the comment, I looked at this when I first saw a similar
comment in the code, and didn't change it because the charCount() is a
small operation. The code is just,
> codePoint >= MIN_SUPPLEMENTARY_CODE_POINT ? 2 : 1;
Another reason I didn't change it is to avoid repeated code.
I suspect there is much to gain. We can follow up this in a separate
issue and get this version in first before feature freeze?
Cheers,
Henry
On 04/25/2013 04:14 PM, Martin Buchholz wrote:
> 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
> <mailto: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 core-libs-dev
mailing list