164 // String.hashCode(). This value is normally calculated in Java code |
164 // String.hashCode(). This value is normally calculated in Java code |
165 // in the String.hashCode method(), but is precomputed for String |
165 // in the String.hashCode method(), but is precomputed for String |
166 // objects in the shared archive file. |
166 // objects in the shared archive file. |
167 // hash P(31) from Kernighan & Ritchie |
167 // hash P(31) from Kernighan & Ritchie |
168 // |
168 // |
169 // For this reason, THIS ALGORITHM MUST MATCH String.toHash(). |
169 // For this reason, THIS ALGORITHM MUST MATCH String.hashCode(). |
170 template <typename T> static unsigned int to_hash(T* s, int len) { |
170 template <typename T> static unsigned int hash_code(T* s, int len) { |
171 unsigned int h = 0; |
171 unsigned int h = 0; |
172 while (len-- > 0) { |
172 while (len-- > 0) { |
173 h = 31*h + (unsigned int) *s; |
173 h = 31*h + (unsigned int) *s; |
174 s++; |
174 s++; |
175 } |
175 } |
176 return h; |
176 return h; |
177 } |
177 } |
178 static unsigned int to_hash(oop java_string); |
178 static unsigned int hash_code(oop java_string); |
179 |
179 |
180 // This is the string hash code used by the StringTable, which may be |
180 // This is the string hash code used by the StringTable, which may be |
181 // the same as String.toHash or an alternate hash code. |
181 // the same as String.hashCode or an alternate hash code. |
182 static unsigned int hash_string(oop java_string); |
182 static unsigned int hash_string(oop java_string); |
183 |
183 |
184 static bool equals(oop java_string, jchar* chars, int len); |
184 static bool equals(oop java_string, jchar* chars, int len); |
185 |
185 |
186 // Conversion between '.' and '/' formats |
186 // Conversion between '.' and '/' formats |