Wed, 16 Jun 2010 21:24:33 +0100 Andrew John Hughes <[email protected]>:
> On 23:02 Wed 16 Jun , Ivan Maidanski wrote:
> > Hi!
> >
> > This patch contains:
> > - a fix for Bidi constructor ("text" field wasn't initialized);
>
> Good catch. I presume the constructor currently throws an NPE?
Yes. (Seems no one else uses this class.)
>
> > - 2 code optimizations (for speed) in Bidi and CollationElementIterator).
> >
>
> Could you document how the optimization version works? It isn't immediately
> clear to me.
For requiresBidi():
1. the optimization is:
(v != const1 && ... && v != constN)
->
((1 << v) & const) !=0, where const = (1 << const1) | ... | (1 << constN).
2. Character.getDirectionality(c) is always left-to-right if c < HEBREW.
>
> I fail to see why work_text is being created at all and text not just used
> for the charAt, substring and length operations. Any ideas?
The only reason is there was a '==' operation.
>
> > ChangeLog entries:
> > * java/text/Bidi.java:
> > (Bidi(AttributedCharacterIterator)): Fix uninitialized "text" field
> > bug (initialize "text" instance field instead of creating "text" local
> > variable).
> > (requiresBidi(char[], int, int)): Optimize the expression (for speed).
> > * java/text/CollationElementIterator.java:
> > (setText(String)): Remove intern() call for work_text (since
> > unnecessary).
> >
> > Regards.
>
> Thanks,
> --
> Andrew :)
>
> Free Java Software Engineer
> Red Hat, Inc. (http://www.redhat.com)