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....@oracle.com > <mailto:henry....@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 > >