Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
8271939: Clean up primitive raw accessors in oopDesc
Reviewed-by: stefank, tschatzl
  • Loading branch information
rkennke committed Aug 9, 2021
1 parent b84a9c7 commit a86ac0d
Show file tree
Hide file tree
Showing 10 changed files with 13 additions and 43 deletions.
2 changes: 1 addition & 1 deletion src/hotspot/share/cds/heapShared.cpp
Expand Up @@ -1022,7 +1022,7 @@ oop HeapShared::archive_reachable_objects_from(int level,
// class_data will be restored explicitly at run time.
guarantee(orig_obj == SystemDictionary::java_platform_loader() ||
orig_obj == SystemDictionary::java_system_loader() ||
java_lang_ClassLoader::loader_data_raw(orig_obj) == NULL, "must be");
java_lang_ClassLoader::loader_data(orig_obj) == NULL, "must be");
java_lang_ClassLoader::release_set_loader_data(archived_obj, NULL);
}
}
Expand Down
27 changes: 2 additions & 25 deletions src/hotspot/share/classfile/javaClasses.cpp
Expand Up @@ -1380,14 +1380,6 @@ void java_lang_Class::fixup_module_field(Klass* k, Handle module) {
java_lang_Class::set_module(k->java_mirror(), module());
}

int java_lang_Class::oop_size(oop java_class) {
assert(_oop_size_offset != 0, "must be set");
int size = java_class->int_field(_oop_size_offset);
assert(size > 0, "Oop size must be greater than zero, not %d", size);
return size;
}


void java_lang_Class::set_oop_size(HeapWord* java_class, int size) {
assert(_oop_size_offset != 0, "must be set");
assert(size > 0, "Oop size must be greater than zero, not %d", size);
Expand All @@ -1399,11 +1391,6 @@ int java_lang_Class::static_oop_field_count(oop java_class) {
return java_class->int_field(_static_oop_field_count_offset);
}

int java_lang_Class::static_oop_field_count_raw(oop java_class) {
assert(_static_oop_field_count_offset != 0, "must be set");
return java_class->int_field_raw(_static_oop_field_count_offset);
}

void java_lang_Class::set_static_oop_field_count(oop java_class, int size) {
assert(_static_oop_field_count_offset != 0, "must be set");
java_class->int_field_put(_static_oop_field_count_offset, size);
Expand Down Expand Up @@ -1510,16 +1497,6 @@ oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, Basic
return java_class;
}


Klass* java_lang_Class::as_Klass_raw(oop java_class) {
//%note memory_2
assert(java_lang_Class::is_instance(java_class), "must be a Class object");
Klass* k = ((Klass*)java_class->metadata_field_raw(_klass_offset));
assert(k == NULL || k->is_klass(), "type check");
return k;
}


void java_lang_Class::set_klass(oop java_class, Klass* klass) {
assert(java_lang_Class::is_instance(java_class), "must be a Class object");
java_class->metadata_field_put(_klass_offset, klass);
Expand Down Expand Up @@ -4263,10 +4240,10 @@ ClassLoaderData* java_lang_ClassLoader::loader_data_acquire(oop loader) {
return HeapAccess<MO_ACQUIRE>::load_at(loader, _loader_data_offset);
}

ClassLoaderData* java_lang_ClassLoader::loader_data_raw(oop loader) {
ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
assert(loader != NULL, "loader must not be NULL");
assert(oopDesc::is_oop(loader), "loader must be oop");
return RawAccess<>::load_at(loader, _loader_data_offset);
return HeapAccess<>::load_at(loader, _loader_data_offset);
}

void java_lang_ClassLoader::release_set_loader_data(oop loader, ClassLoaderData* new_data) {
Expand Down
5 changes: 1 addition & 4 deletions src/hotspot/share/classfile/javaClasses.hpp
Expand Up @@ -322,7 +322,6 @@ class java_lang_Class : AllStatic {

// Conversion
static Klass* as_Klass(oop java_class);
static Klass* as_Klass_raw(oop java_class);
static void set_klass(oop java_class, Klass* klass);
static BasicType as_BasicType(oop java_class, Klass** reference_klass = NULL);
static Symbol* as_signature(oop java_class, bool intern_if_not_found);
Expand Down Expand Up @@ -368,10 +367,8 @@ class java_lang_Class : AllStatic {
static void set_source_file(oop java_class, oop source_file);

static int oop_size(oop java_class);
static int oop_size_raw(oop java_class);
static void set_oop_size(HeapWord* java_class, int size);
static int static_oop_field_count(oop java_class);
static int static_oop_field_count_raw(oop java_class);
static void set_static_oop_field_count(oop java_class, int size);

static GrowableArray<Klass*>* fixup_mirror_list() {
Expand Down Expand Up @@ -1354,7 +1351,7 @@ class java_lang_ClassLoader : AllStatic {
static void serialize_offsets(SerializeClosure* f) NOT_CDS_RETURN;

static ClassLoaderData* loader_data_acquire(oop loader);
static ClassLoaderData* loader_data_raw(oop loader);
static ClassLoaderData* loader_data(oop loader);
static void release_set_loader_data(oop loader, ClassLoaderData* new_data);

static oop parent(oop loader);
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/classfile/javaClasses.inline.hpp
Expand Up @@ -261,9 +261,9 @@ inline bool java_lang_Class::is_primitive(oop java_class) {
return is_primitive;
}

inline int java_lang_Class::oop_size_raw(oop java_class) {
inline int java_lang_Class::oop_size(oop java_class) {
assert(_oop_size_offset != 0, "must be set");
int size = java_class->int_field_raw(_oop_size_offset);
int size = java_class->int_field(_oop_size_offset);
assert(size > 0, "Oop size must be greater than zero, not %d", size);
return size;
}
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/oops/instanceClassLoaderKlass.inline.hpp
Expand Up @@ -40,7 +40,7 @@ inline void InstanceClassLoaderKlass::oop_oop_iterate(oop obj, OopClosureType* c
InstanceKlass::oop_oop_iterate<T>(obj, closure);

if (Devirtualizer::do_metadata(closure)) {
ClassLoaderData* cld = java_lang_ClassLoader::loader_data_raw(obj);
ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj);
// cld can be null if we have a non-registered class loader.
if (cld != NULL) {
Devirtualizer::do_cld(closure, cld);
Expand All @@ -62,7 +62,7 @@ inline void InstanceClassLoaderKlass::oop_oop_iterate_bounded(oop obj, OopClosur

if (Devirtualizer::do_metadata(closure)) {
if (mr.contains(obj)) {
ClassLoaderData* cld = java_lang_ClassLoader::loader_data_raw(obj);
ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj);
// cld can be null if we have a non-registered class loader.
if (cld != NULL) {
Devirtualizer::do_cld(closure, cld);
Expand Down
2 changes: 1 addition & 1 deletion src/hotspot/share/oops/instanceMirrorKlass.cpp
Expand Up @@ -56,7 +56,7 @@ instanceOop InstanceMirrorKlass::allocate_instance(Klass* k, TRAPS) {
}

int InstanceMirrorKlass::oop_size(oop obj) const {
return java_lang_Class::oop_size_raw(obj);
return java_lang_Class::oop_size(obj);
}

int InstanceMirrorKlass::compute_static_oop_field_count(oop obj) {
Expand Down
8 changes: 4 additions & 4 deletions src/hotspot/share/oops/instanceMirrorKlass.inline.hpp
Expand Up @@ -38,7 +38,7 @@
template <typename T, class OopClosureType>
void InstanceMirrorKlass::oop_oop_iterate_statics(oop obj, OopClosureType* closure) {
T* p = (T*)start_of_static_fields(obj);
T* const end = p + java_lang_Class::static_oop_field_count_raw(obj);
T* const end = p + java_lang_Class::static_oop_field_count(obj);

for (; p < end; ++p) {
Devirtualizer::do_oop(closure, p);
Expand All @@ -50,7 +50,7 @@ void InstanceMirrorKlass::oop_oop_iterate(oop obj, OopClosureType* closure) {
InstanceKlass::oop_oop_iterate<T>(obj, closure);

if (Devirtualizer::do_metadata(closure)) {
Klass* klass = java_lang_Class::as_Klass_raw(obj);
Klass* klass = java_lang_Class::as_Klass(obj);
// We'll get NULL for primitive mirrors.
if (klass != NULL) {
if (klass->class_loader_data() == NULL) {
Expand Down Expand Up @@ -97,7 +97,7 @@ void InstanceMirrorKlass::oop_oop_iterate_statics_bounded(oop obj,
OopClosureType* closure,
MemRegion mr) {
T* p = (T*)start_of_static_fields(obj);
T* end = p + java_lang_Class::static_oop_field_count_raw(obj);
T* end = p + java_lang_Class::static_oop_field_count(obj);

T* const l = (T*)mr.start();
T* const h = (T*)mr.end();
Expand All @@ -123,7 +123,7 @@ void InstanceMirrorKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closu

if (Devirtualizer::do_metadata(closure)) {
if (mr.contains(obj)) {
Klass* klass = java_lang_Class::as_Klass_raw(obj);
Klass* klass = java_lang_Class::as_Klass(obj);
// We'll get NULL for primitive mirrors.
if (klass != NULL) {
Devirtualizer::do_klass(closure, klass);
Expand Down
1 change: 0 additions & 1 deletion src/hotspot/share/oops/oop.cpp
Expand Up @@ -186,7 +186,6 @@ void oopDesc::address_field_put(int offset, address value) { HeapAcce
void oopDesc::release_address_field_put(int offset, address value) { HeapAccess<MO_RELEASE>::store_at(as_oop(), offset, value); }

Metadata* oopDesc::metadata_field(int offset) const { return HeapAccess<>::load_at(as_oop(), offset); }
Metadata* oopDesc::metadata_field_raw(int offset) const { return RawAccess<>::load_at(as_oop(), offset); }
void oopDesc::metadata_field_put(int offset, Metadata* value) { HeapAccess<>::store_at(as_oop(), offset, value); }

Metadata* oopDesc::metadata_field_acquire(int offset) const { return HeapAccess<MO_ACQUIRE>::load_at(as_oop(), offset); }
Expand Down
2 changes: 0 additions & 2 deletions src/hotspot/share/oops/oop.hpp
Expand Up @@ -147,7 +147,6 @@ class oopDesc {
void obj_field_put_volatile(int offset, oop value);

Metadata* metadata_field(int offset) const;
Metadata* metadata_field_raw(int offset) const;
void metadata_field_put(int offset, Metadata* value);

Metadata* metadata_field_acquire(int offset) const;
Expand All @@ -165,7 +164,6 @@ class oopDesc {
void bool_field_put_volatile(int offset, jboolean contents);

jint int_field(int offset) const;
jint int_field_raw(int offset) const;
void int_field_put(int offset, jint contents);

jshort short_field(int offset) const;
Expand Down
1 change: 0 additions & 1 deletion src/hotspot/share/oops/oop.inline.hpp
Expand Up @@ -239,7 +239,6 @@ inline jshort oopDesc::short_field(int offset) const { return Hea
inline void oopDesc::short_field_put(int offset, jshort value) { HeapAccess<>::store_at(as_oop(), offset, value); }

inline jint oopDesc::int_field(int offset) const { return HeapAccess<>::load_at(as_oop(), offset); }
inline jint oopDesc::int_field_raw(int offset) const { return RawAccess<>::load_at(as_oop(), offset); }
inline void oopDesc::int_field_put(int offset, jint value) { HeapAccess<>::store_at(as_oop(), offset, value); }

inline jlong oopDesc::long_field(int offset) const { return HeapAccess<>::load_at(as_oop(), offset); }
Expand Down

1 comment on commit a86ac0d

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.