hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 37172 ff4d69314a4c
parent 37082 1a8577705228
child 37179 4dbcb3a642d2
equal deleted inserted replaced
37171:b968bbc6291c 37172:ff4d69314a4c
   511   assert(result_length >= length + 1, "must not be shorter");
   511   assert(result_length >= length + 1, "must not be shorter");
   512   assert(result_length == (int)strlen(result) + 1, "must match");
   512   assert(result_length == (int)strlen(result) + 1, "must match");
   513   return result;
   513   return result;
   514 }
   514 }
   515 
   515 
   516 unsigned int java_lang_String::hash_string(oop java_string) {
       
   517   int          length = java_lang_String::length(java_string);
       
   518   // Zero length string doesn't necessarily hash to zero.
       
   519   if (length == 0) {
       
   520     return StringTable::hash_string((jchar*) NULL, 0);
       
   521   }
       
   522 
       
   523   typeArrayOop value  = java_lang_String::value(java_string);
       
   524   bool      is_latin1 = java_lang_String::is_latin1(java_string);
       
   525   if (is_latin1) {
       
   526     return StringTable::hash_string(value->byte_at_addr(0), length);
       
   527   } else {
       
   528     return StringTable::hash_string(value->char_at_addr(0), length);
       
   529   }
       
   530 }
       
   531 
   516 
   532 Symbol* java_lang_String::as_symbol(Handle java_string, TRAPS) {
   517 Symbol* java_lang_String::as_symbol(Handle java_string, TRAPS) {
   533   oop          obj    = java_string();
   518   oop          obj    = java_string();
   534   typeArrayOop value  = java_lang_String::value(obj);
   519   typeArrayOop value  = java_lang_String::value(obj);
   535   int          length = java_lang_String::length(obj);
   520   int          length = java_lang_String::length(obj);