< prev index next >

src/share/vm/gc/g1/g1StringDedupTable.cpp

Print this page




 282     if (use_java_hash()) {
 283       hash = java_lang_String::hash_code(data, length);
 284     } else {
 285       hash = AltHashing::murmur3_32(_table->_hash_seed, data, length);
 286     }
 287   } else {
 288     length /= sizeof(jchar) / sizeof(jbyte); // Convert number of bytes to number of chars
 289     const jchar* data = (jchar*)value->base(T_CHAR);
 290     if (use_java_hash()) {
 291       hash = java_lang_String::hash_code(data, length);
 292     } else {
 293       hash = AltHashing::murmur3_32(_table->_hash_seed, data, length);
 294     }
 295   }
 296 
 297   return hash;
 298 }
 299 
 300 void G1StringDedupTable::deduplicate(oop java_string, G1StringDedupStat& stat) {
 301   assert(java_lang_String::is_instance(java_string), "Must be a string");
 302   No_Safepoint_Verifier nsv;
 303 
 304   stat.inc_inspected();
 305 
 306   typeArrayOop value = java_lang_String::value(java_string);
 307   if (value == NULL) {
 308     // String has no value
 309     stat.inc_skipped();
 310     return;
 311   }
 312 
 313   bool latin1 = java_lang_String::is_latin1(java_string);
 314   unsigned int hash = 0;
 315 
 316   if (use_java_hash()) {
 317     // Get hash code from cache
 318     hash = java_lang_String::hash(java_string);
 319   }
 320 
 321   if (hash == 0) {
 322     // Compute hash




 282     if (use_java_hash()) {
 283       hash = java_lang_String::hash_code(data, length);
 284     } else {
 285       hash = AltHashing::murmur3_32(_table->_hash_seed, data, length);
 286     }
 287   } else {
 288     length /= sizeof(jchar) / sizeof(jbyte); // Convert number of bytes to number of chars
 289     const jchar* data = (jchar*)value->base(T_CHAR);
 290     if (use_java_hash()) {
 291       hash = java_lang_String::hash_code(data, length);
 292     } else {
 293       hash = AltHashing::murmur3_32(_table->_hash_seed, data, length);
 294     }
 295   }
 296 
 297   return hash;
 298 }
 299 
 300 void G1StringDedupTable::deduplicate(oop java_string, G1StringDedupStat& stat) {
 301   assert(java_lang_String::is_instance(java_string), "Must be a string");
 302   NoSafepointVerifier nsv;
 303 
 304   stat.inc_inspected();
 305 
 306   typeArrayOop value = java_lang_String::value(java_string);
 307   if (value == NULL) {
 308     // String has no value
 309     stat.inc_skipped();
 310     return;
 311   }
 312 
 313   bool latin1 = java_lang_String::is_latin1(java_string);
 314   unsigned int hash = 0;
 315 
 316   if (use_java_hash()) {
 317     // Get hash code from cache
 318     hash = java_lang_String::hash(java_string);
 319   }
 320 
 321   if (hash == 0) {
 322     // Compute hash


< prev index next >