< prev index next >
src/share/vm/classfile/javaClasses.cpp
Print this page
*** 210,220 ****
return Handle();
}
int length = UTF8::unicode_length(utf8_str);
Handle h_obj = basic_create(length, CHECK_NH);
if (length > 0) {
! UTF8::convert_to_unicode(utf8_str, value(h_obj())->char_at_addr(0), length);
}
return h_obj;
}
oop java_lang_String::create_oop_from_str(const char* utf8_str, TRAPS) {
--- 210,222 ----
return Handle();
}
int length = UTF8::unicode_length(utf8_str);
Handle h_obj = basic_create(length, CHECK_NH);
if (length > 0) {
! typeArrayOop buffer = value(h_obj());
! buffer = typeArrayOop(oopDesc::bs()->write_barrier(buffer));
! UTF8::convert_to_unicode(utf8_str, buffer->char_at_addr(0), length);
}
return h_obj;
}
oop java_lang_String::create_oop_from_str(const char* utf8_str, TRAPS) {
*** 224,234 ****
Handle java_lang_String::create_from_symbol(Symbol* symbol, TRAPS) {
int length = UTF8::unicode_length((char*)symbol->bytes(), symbol->utf8_length());
Handle h_obj = basic_create(length, CHECK_NH);
if (length > 0) {
! UTF8::convert_to_unicode((char*)symbol->bytes(), value(h_obj())->char_at_addr(0), length);
}
return h_obj;
}
// Converts a C string to a Java String based on current encoding
--- 226,238 ----
Handle java_lang_String::create_from_symbol(Symbol* symbol, TRAPS) {
int length = UTF8::unicode_length((char*)symbol->bytes(), symbol->utf8_length());
Handle h_obj = basic_create(length, CHECK_NH);
if (length > 0) {
! typeArrayOop buffer = value(h_obj());
! buffer = typeArrayOop(oopDesc::bs()->write_barrier(buffer));
! UTF8::convert_to_unicode((char*)symbol->bytes(), buffer->char_at_addr(0), length);
}
return h_obj;
}
// Converts a C string to a Java String based on current encoding
*** 441,450 ****
--- 445,457 ----
bool java_lang_String::equals(oop java_string, jchar* chars, int len) {
assert(java_string->klass() == SystemDictionary::String_klass(),
"must be java_string");
typeArrayOop value = java_lang_String::value(java_string);
+ if (ShenandoahVerifyReadsToFromSpace) {
+ value = (typeArrayOop) oopDesc::bs()->read_barrier(value);
+ }
int offset = java_lang_String::offset(java_string);
int length = java_lang_String::length(java_string);
if (length != len) {
return false;
}
*** 861,873 ****
BasicType type = T_VOID;
if (ak != NULL) {
// Note: create_basic_type_mirror above initializes ak to a non-null value.
type = ArrayKlass::cast(ak)->element_type();
} else {
! assert(java_class == Universe::void_mirror(), "only valid non-array primitive");
}
! assert(Universe::java_mirror(type) == java_class, "must be consistent");
return type;
}
BasicType java_lang_Class::as_BasicType(oop java_class, Klass** reference_klass) {
assert(java_lang_Class::is_instance(java_class), "must be a Class object");
--- 868,880 ----
BasicType type = T_VOID;
if (ak != NULL) {
// Note: create_basic_type_mirror above initializes ak to a non-null value.
type = ArrayKlass::cast(ak)->element_type();
} else {
! assert(oopDesc::bs()->write_barrier(java_class) == oopDesc::bs()->write_barrier(Universe::void_mirror()), "only valid non-array primitive");
}
! assert(oopDesc::bs()->write_barrier(Universe::java_mirror(type)) == oopDesc::bs()->write_barrier(java_class), "must be consistent");
return type;
}
BasicType java_lang_Class::as_BasicType(oop java_class, Klass** reference_klass) {
assert(java_lang_Class::is_instance(java_class), "must be a Class object");
*** 3089,3098 ****
--- 3096,3106 ----
assert(loader != NULL && loader->is_oop(), "loader must be oop");
return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
}
ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
+ loader = oopDesc::bs()->read_barrier(loader);
return *java_lang_ClassLoader::loader_data_addr(loader);
}
void java_lang_ClassLoader::compute_offsets() {
assert(!offsets_computed, "offsets should be initialized only once");
*** 3105,3114 ****
--- 3113,3125 ----
CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
}
oop java_lang_ClassLoader::parent(oop loader) {
+ if (ShenandoahVerifyReadsToFromSpace) {
+ loader = oopDesc::bs()->read_barrier(loader);
+ }
assert(is_instance(loader), "loader must be oop");
return loader->obj_field(parent_offset);
}
bool java_lang_ClassLoader::isAncestor(oop loader, oop cl) {
< prev index next >