src/hotspot/share/classfile/javaClasses.inline.hpp
changeset 53418 bc2bb4eee477
parent 53380 c8208421a860
child 53447 edba42d2370f
equal deleted inserted replaced
53417:126c5e7b97b1 53418:bc2bb4eee477
    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 }