On 19/Dec/2009 18:57, Nathan Beyer wrote: > RE: https://issues.apache.org/jira/browse/HARMONY-6404 > > I posted up two proposed patches for String, please comment on which > is preferable. One is the change previously mentioned, the other is a > slightly bigger reorganization.
Neither. There is nothing wrong with the original code. Any JVM or compiler that would actually move a load up above a conditional store to the same variable would be seriously broken all round. Regards, Tim > On Sat, Dec 19, 2009 at 4:04 AM, Egor Pasko <egor.pa...@gmail.com> wrote: >> On the 0x68A day of Apache Harmony Tim Ellison wrote: >>> On 12/Dec/2009 10:54, Egor Pasko wrote: >>>> On the 0x685 day of Apache Harmony Nathan Beyer wrote: >>> <snip> >>>>> In any case, it does seem a pinch more efficient to only do one read >>>>> of hashCode ... switch up the code to be something like this. >>>>> >>>>> public int hashCode() { >>>>> final int hash = hashCode; >>>>> if (hash == 0) { >>>>> if (count == 0) { >>>>> return 0; >>>>> } >>>>> for (int i = offset; i < count + offset; i++) { >>>>> hash = value[i] + ((hash << 5) - hash); >>>>> } >>>>> hashCode = hash; >>>> one more 'return hash' here, please :) >>> Why? >> argh, what was I thinking about? the original Nathan's code is great. >> >> -- >> Egor Pasko >> >> >