< 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 >