equal
deleted
inserted
replaced
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); |