< prev index next >

src/hotspot/share/classfile/javaClasses.inline.hpp

Print this page
rev 48032 : imported patch Access_strings
rev 48033 : [mq]: Access_strings_v2

@@ -55,12 +55,11 @@
   return (typeArrayOop) java_string->obj_field(value_offset);
 }
 typeArrayOop java_lang_String::value_no_keepalive(oop java_string) {
   assert(initialized && (value_offset > 0), "Must be initialized");
   assert(is_instance(java_string), "must be java_string");
-  oop value = HeapAccess<AS_NO_KEEPALIVE>::oop_load_at(java_string, value_offset);
-  return (typeArrayOop)value;
+  return (typeArrayOop) java_string->obj_field_special<AS_NO_KEEPALIVE>(value_offset);
 }
 unsigned int java_lang_String::hash(oop java_string) {
   assert(initialized && (hash_offset > 0), "Must be initialized");
   assert(is_instance(java_string), "must be java_string");
   return java_string->int_field(hash_offset);

@@ -71,13 +70,13 @@
   jbyte coder = java_string->byte_field(coder_offset);
   assert(CompactStrings || coder == CODER_UTF16, "Must be UTF16 without CompactStrings");
   return coder == CODER_LATIN1;
 }
 int java_lang_String::length(oop java_string) {
-  typeArrayOop value = java_lang_String::value_no_keepalive(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);
   if (value == NULL) {
     return 0;
   }
   int arr_length = value->length();
   if (!is_latin1(java_string)) {
< prev index next >