src/hotspot/share/classfile/javaClasses.inline.hpp
changeset 53418 bc2bb4eee477
parent 53380 c8208421a860
child 53447 edba42d2370f
--- a/src/hotspot/share/classfile/javaClasses.inline.hpp	Tue Jan 22 10:12:05 2019 +0100
+++ b/src/hotspot/share/classfile/javaClasses.inline.hpp	Tue Jan 22 11:22:44 2019 +0100
@@ -71,10 +71,11 @@
   assert(CompactStrings || coder == CODER_UTF16, "Must be UTF16 without CompactStrings");
   return coder == CODER_LATIN1;
 }
-int java_lang_String::length(oop java_string) {
+int java_lang_String::length(oop java_string, typeArrayOop value) {
   assert(initialized, "Must be initialized");
   assert(is_instance(java_string), "must be java_string");
-  typeArrayOop value = java_lang_String::value_no_keepalive(java_string);
+  assert(oopDesc::equals_raw(value, java_lang_String::value(java_string)),
+         "value must be same as java_lang_String::value(java_string)");
   if (value == NULL) {
     return 0;
   }
@@ -85,6 +86,12 @@
   }
   return arr_length;
 }
+int java_lang_String::length(oop java_string) {
+  assert(initialized, "Must be initialized");
+  assert(is_instance(java_string), "must be java_string");
+  typeArrayOop value = java_lang_String::value_no_keepalive(java_string);
+  return length(java_string, value);
+}
 
 bool java_lang_String::is_instance_inlined(oop obj) {
   return obj != NULL && obj->klass() == SystemDictionary::String_klass();