--- old/src/hotspot/share/classfile/javaClasses.inline.hpp 2017-11-30 14:09:08.608258549 +0100 +++ new/src/hotspot/share/classfile/javaClasses.inline.hpp 2017-11-30 14:09:08.320258559 +0100 @@ -57,8 +57,7 @@ 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::oop_load_at(java_string, value_offset); - return (typeArrayOop)value; + return (typeArrayOop) java_string->obj_field_special(value_offset); } unsigned int java_lang_String::hash(oop java_string) { assert(initialized && (hash_offset > 0), "Must be initialized"); @@ -73,9 +72,9 @@ 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; }