diff src/share/vm/classfile/symbolTable.cpp @ 6201:ace99a6ffc83

7181200: JVM new hashing code breaks SA in product mode Summary: Made new_hash() overloaded rather than a virtual function so SA code doesn't need to be changed. Reviewed-by: kvn, acorn, dholmes, fparain
author coleenp
date Wed, 04 Jul 2012 15:55:45 -0400
parents d2a62e0f25eb
children da91efe96a93
line wrap: on
line diff
--- a/src/share/vm/classfile/symbolTable.cpp	Tue Jul 03 17:35:00 2012 -0700
+++ b/src/share/vm/classfile/symbolTable.cpp	Wed Jul 04 15:55:45 2012 -0400
@@ -43,7 +43,6 @@
 // Static arena for symbols that are not deallocated
 Arena* SymbolTable::_arena = NULL;
 bool SymbolTable::_needs_rehashing = false;
-jint SymbolTable::_seed = 0;
 
 Symbol* SymbolTable::allocate_symbol(const u1* name, int len, bool c_heap, TRAPS) {
   assert (len <= Symbol::max_length(), "should be checked by caller");
@@ -130,12 +129,6 @@
   }
 }
 
-unsigned int SymbolTable::new_hash(Symbol* sym) {
-  ResourceMark rm;
-  // Use alternate hashing algorithm on this symbol.
-  return AltHashing::murmur3_32(seed(), (const jbyte*)sym->as_C_string(), sym->utf8_length());
-}
-
 // Create a new table and using alternate hash code, populate the new table
 // with the existing strings.   Set flag to use the alternate hash code afterwards.
 void SymbolTable::rehash_table() {
@@ -145,10 +138,6 @@
   // Create a new symbol table
   SymbolTable* new_table = new SymbolTable();
 
-  // Initialize the global seed for hashing.
-  _seed = AltHashing::compute_seed();
-  assert(seed() != 0, "shouldn't be zero");
-
   the_table()->move_to(new_table);
 
   // Delete the table and buckets (entries are reused in new table).
@@ -620,7 +609,6 @@
 StringTable* StringTable::_the_table = NULL;
 
 bool StringTable::_needs_rehashing = false;
-jint StringTable::_seed = 0;
 
 // Pick hashing algorithm
 unsigned int StringTable::hash_string(const jchar* s, int len) {
@@ -837,14 +825,6 @@
 }
 
 
-unsigned int StringTable::new_hash(oop string) {
-  ResourceMark rm;
-  int length;
-  jchar* chars = java_lang_String::as_unicode_string(string, length);
-  // Use alternate hashing algorithm on the string
-  return AltHashing::murmur3_32(seed(), chars, length);
-}
-
 // Create a new table and using alternate hash code, populate the new table
 // with the existing strings.   Set flag to use the alternate hash code afterwards.
 void StringTable::rehash_table() {
@@ -853,10 +833,6 @@
   if (DumpSharedSpaces) return;
   StringTable* new_table = new StringTable();
 
-  // Initialize new global seed for hashing.
-  _seed = AltHashing::compute_seed();
-  assert(seed() != 0, "shouldn't be zero");
-
   // Rehash the table
   the_table()->move_to(new_table);