Am 26.02.2010 17:10, schrieb Ulf Zibis:
Additionally we can save double incrementing of int i and off:
public int hashCode() {
int h = hash;
if (h == 0) {
int len = count;
if (len> 0) {
char[] val = value;
// for (int i = offset, len += i; i< len; ) // would be nice
syntax -> RFE to project coin
for (int i = offset, limit = len += i; i < len; i++)
h = 31*h + val[i];
hash = h;
}
}
return h;
}
And in hotspot/src/share/vm/classfile/symbolTable.cpp :
int StringTable::hash_string(jchar* s, int len) {
unsigned h = 0;
for (len = s + len*sizeof(jchar); s < len; s++)
h = 31*h + (unsigned) *s;
return h;
}
-Ulf