69 assert(is_instance(java_string), "must be java_string"); |
69 assert(is_instance(java_string), "must be java_string"); |
70 jbyte coder = java_string->byte_field(coder_offset); |
70 jbyte coder = java_string->byte_field(coder_offset); |
71 assert(CompactStrings || coder == CODER_UTF16, "Must be UTF16 without CompactStrings"); |
71 assert(CompactStrings || coder == CODER_UTF16, "Must be UTF16 without CompactStrings"); |
72 return coder == CODER_LATIN1; |
72 return coder == CODER_LATIN1; |
73 } |
73 } |
74 int java_lang_String::length(oop java_string) { |
74 int java_lang_String::length(oop java_string, typeArrayOop value) { |
75 assert(initialized, "Must be initialized"); |
75 assert(initialized, "Must be initialized"); |
76 assert(is_instance(java_string), "must be java_string"); |
76 assert(is_instance(java_string), "must be java_string"); |
77 typeArrayOop value = java_lang_String::value_no_keepalive(java_string); |
77 assert(oopDesc::equals_raw(value, java_lang_String::value(java_string)), |
|
78 "value must be same as java_lang_String::value(java_string)"); |
78 if (value == NULL) { |
79 if (value == NULL) { |
79 return 0; |
80 return 0; |
80 } |
81 } |
81 int arr_length = value->length(); |
82 int arr_length = value->length(); |
82 if (!is_latin1(java_string)) { |
83 if (!is_latin1(java_string)) { |
83 assert((arr_length & 1) == 0, "should be even for UTF16 string"); |
84 assert((arr_length & 1) == 0, "should be even for UTF16 string"); |
84 arr_length >>= 1; // convert number of bytes to number of elements |
85 arr_length >>= 1; // convert number of bytes to number of elements |
85 } |
86 } |
86 return arr_length; |
87 return arr_length; |
|
88 } |
|
89 int java_lang_String::length(oop java_string) { |
|
90 assert(initialized, "Must be initialized"); |
|
91 assert(is_instance(java_string), "must be java_string"); |
|
92 typeArrayOop value = java_lang_String::value_no_keepalive(java_string); |
|
93 return length(java_string, value); |
87 } |
94 } |
88 |
95 |
89 bool java_lang_String::is_instance_inlined(oop obj) { |
96 bool java_lang_String::is_instance_inlined(oop obj) { |
90 return obj != NULL && obj->klass() == SystemDictionary::String_klass(); |
97 return obj != NULL && obj->klass() == SystemDictionary::String_klass(); |
91 } |
98 } |