< prev index next >
src/hotspot/share/gc/shared/stringdedup/stringDedupTable.cpp
Print this page
rev 54472 : 8221836: Avoid recalculating String.hash when zero
Reviewed-by: jrose, adinn
Contributed-by: peter.levart@gmail.com, claes.redestad@oracle.com
@@ -349,23 +349,18 @@
bool latin1 = java_lang_String::is_latin1(java_string);
unsigned int hash = 0;
if (use_java_hash()) {
- // Get hash code from cache
- hash = java_lang_String::hash(java_string);
+ if (!java_lang_String::hash_is_set(java_string)) {
+ stat->inc_hashed();
}
-
- if (hash == 0) {
+ hash = java_lang_String::hash_code(java_string);
+ } else {
// Compute hash
hash = hash_code(value, latin1);
stat->inc_hashed();
-
- if (use_java_hash() && hash != 0) {
- // Store hash code in cache
- java_lang_String::set_hash(java_string, hash);
- }
}
typeArrayOop existing_value = lookup_or_add(value, latin1, hash);
if (oopDesc::equals_raw(existing_value, value)) {
// Same value, already known
< prev index next >