From 78c2d57259ad829a2cfc1370efbb2a5913df4661 Mon Sep 17 00:00:00 2001 From: Axel Boldt-Christmas Date: Tue, 16 Dec 2025 07:38:26 +0000 Subject: [PATCH] 8373668: Add override keyword to *Klass classes Reviewed-by: jwaters, dholmes, kbarrett, tschatzl --- src/hotspot/share/oops/arrayKlass.hpp | 36 ++++----- src/hotspot/share/oops/instanceKlass.hpp | 78 +++++++++---------- .../share/oops/instanceMirrorKlass.hpp | 2 +- src/hotspot/share/oops/instanceRefKlass.hpp | 2 +- src/hotspot/share/oops/klass.hpp | 13 +--- src/hotspot/share/oops/objArrayKlass.hpp | 40 +++++----- src/hotspot/share/oops/typeArrayKlass.hpp | 28 +++---- 7 files changed, 97 insertions(+), 102 deletions(-) diff --git a/src/hotspot/share/oops/arrayKlass.hpp b/src/hotspot/share/oops/arrayKlass.hpp index 6ee783fb510..b9b100f18a8 100644 --- a/src/hotspot/share/oops/arrayKlass.hpp +++ b/src/hotspot/share/oops/arrayKlass.hpp @@ -51,15 +51,15 @@ class ArrayKlass: public Klass { public: // Testing operation - DEBUG_ONLY(bool is_array_klass_slow() const { return true; }) + DEBUG_ONLY(bool is_array_klass_slow() const override { return true; }) // Returns the ObjArrayKlass for n'th dimension. - ArrayKlass* array_klass(int n, TRAPS); - ArrayKlass* array_klass_or_null(int n); + ArrayKlass* array_klass(int n, TRAPS) override; + ArrayKlass* array_klass_or_null(int n) override; // Returns the array class with this class as element type. - ArrayKlass* array_klass(TRAPS); - ArrayKlass* array_klass_or_null(); + ArrayKlass* array_klass(TRAPS) override; + ArrayKlass* array_klass_or_null() override; // Instance variables int dimension() const { return _dimension; } @@ -79,7 +79,7 @@ class ArrayKlass: public Klass { // type of elements (T_OBJECT for both oop arrays and array-arrays) BasicType element_type() const { return layout_helper_element_type(layout_helper()); } - virtual InstanceKlass* java_super() const; + InstanceKlass* java_super() const override; // Allocation // Sizes points to the first dimension of the array, subsequent dimensions @@ -87,13 +87,13 @@ class ArrayKlass: public Klass { virtual oop multi_allocate(int rank, jint* sizes, TRAPS); // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined - Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; + Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const override; // Lookup operations Method* uncached_lookup_method(const Symbol* name, const Symbol* signature, OverpassLookupMode overpass_mode, - PrivateLookupMode private_mode = PrivateLookupMode::find) const; + PrivateLookupMode private_mode = PrivateLookupMode::find) const override; static ArrayKlass* cast(Klass* k) { return const_cast(cast(const_cast(k))); @@ -105,38 +105,38 @@ class ArrayKlass: public Klass { } GrowableArray* compute_secondary_supers(int num_extra_slots, - Array* transitive_interfaces); + Array* transitive_interfaces) override; // Sizing static int static_size(int header_size); - virtual void metaspace_pointers_do(MetaspaceClosure* iter); + void metaspace_pointers_do(MetaspaceClosure* iter) override; // Return a handle. static void complete_create_array_klass(ArrayKlass* k, Klass* super_klass, ModuleEntry* module, TRAPS); // JVMTI support - jint jvmti_class_status() const; + jint jvmti_class_status() const override; #if INCLUDE_CDS // CDS support - remove and restore oops from metadata. Oops are not shared. - virtual void remove_unshareable_info(); - virtual void remove_java_mirror(); + void remove_unshareable_info() override; + void remove_java_mirror() override; void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS); void cds_print_value_on(outputStream* st) const; #endif void log_array_class_load(Klass* k); // Printing - void print_on(outputStream* st) const; - void print_value_on(outputStream* st) const; + void print_on(outputStream* st) const override; + void print_value_on(outputStream* st) const override; - void oop_print_on(oop obj, outputStream* st); + void oop_print_on(oop obj, outputStream* st) override; // Verification - void verify_on(outputStream* st); + void verify_on(outputStream* st) override; - void oop_verify_on(oop obj, outputStream* st); + void oop_verify_on(oop obj, outputStream* st) override; }; #endif // SHARE_OOPS_ARRAYKLASS_HPP diff --git a/src/hotspot/share/oops/instanceKlass.hpp b/src/hotspot/share/oops/instanceKlass.hpp index a03e6c05b54..23a59d26093 100644 --- a/src/hotspot/share/oops/instanceKlass.hpp +++ b/src/hotspot/share/oops/instanceKlass.hpp @@ -313,8 +313,8 @@ class InstanceKlass: public Klass { bool is_public() const { return _access_flags.is_public(); } bool is_final() const { return _access_flags.is_final(); } - bool is_interface() const { return _access_flags.is_interface(); } - bool is_abstract() const { return _access_flags.is_abstract(); } + bool is_interface() const override { return _access_flags.is_interface(); } + bool is_abstract() const override { return _access_flags.is_abstract(); } bool is_super() const { return _access_flags.is_super(); } bool is_synthetic() const { return _access_flags.is_synthetic(); } void set_is_synthetic() { _access_flags.set_is_synthetic(); } @@ -494,8 +494,8 @@ public: }; // package - PackageEntry* package() const { return _package_entry; } - ModuleEntry* module() const; + PackageEntry* package() const override { return _package_entry; } + ModuleEntry* module() const override; bool in_javabase_module() const; bool in_unnamed_package() const { return (_package_entry == nullptr); } void set_package(ClassLoaderData* loader_data, PackageEntry* pkg_entry, TRAPS); @@ -552,11 +552,11 @@ public: void set_is_marked_dependent(bool value) { _misc_flags.set_is_marked_dependent(value); } // initialization (virtuals from Klass) - bool should_be_initialized() const; // means that initialize should be called + bool should_be_initialized() const override; // means that initialize should be called void initialize_with_aot_initialized_mirror(TRAPS); void assert_no_clinit_will_run_for_aot_initialized_class() const NOT_DEBUG_RETURN; - void initialize(TRAPS); - void initialize_preemptable(TRAPS); + void initialize(TRAPS) override; + void initialize_preemptable(TRAPS) override; void link_class(TRAPS); bool link_class_or_fail(TRAPS); // returns false on failure void rewrite_class(TRAPS); @@ -578,7 +578,7 @@ public: // find field in direct superinterfaces, returns the interface in which the field is defined Klass* find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined - Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const; + Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const override; // find instance or static fields according to JVM spec 5.4.3.2, returns the klass in which the field is defined Klass* find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const; @@ -637,7 +637,7 @@ public: Method* uncached_lookup_method(const Symbol* name, const Symbol* signature, OverpassLookupMode overpass_mode, - PrivateLookupMode private_mode = PrivateLookupMode::find) const; + PrivateLookupMode private_mode = PrivateLookupMode::find) const override; // lookup a method in all the interfaces that this class implements // (returns null if not found) @@ -660,7 +660,7 @@ public: void set_constants(ConstantPool* c) { _constants = c; } // protection domain - oop protection_domain() const; + oop protection_domain() const override; // signers objArrayOop signers() const; @@ -834,7 +834,7 @@ public: // Check whether reflection/jni/jvm code is allowed to instantiate this class; // if not, throw either an Error or an Exception. - virtual void check_valid_for_instantiation(bool throwError, TRAPS); + void check_valid_for_instantiation(bool throwError, TRAPS) override; // initialization void call_class_initializer(TRAPS); @@ -901,12 +901,12 @@ public: public: // virtual operations from Klass GrowableArray* compute_secondary_supers(int num_extra_slots, - Array* transitive_interfaces); - bool can_be_primary_super_slow() const; - size_t oop_size(oop obj) const { return size_helper(); } + Array* transitive_interfaces) override; + bool can_be_primary_super_slow() const override; + size_t oop_size(oop obj) const override { return size_helper(); } // slow because it's a virtual call and used for verifying the layout_helper. // Using the layout_helper bits, we can call is_instance_klass without a virtual call. - DEBUG_ONLY(bool is_instance_klass_slow() const { return true; }) + DEBUG_ONLY(bool is_instance_klass_slow() const override { return true; }) // Iterators void do_local_static_fields(FieldClosure* cl); @@ -932,7 +932,7 @@ public: return (Klass::super() == nullptr) ? nullptr : InstanceKlass::cast(Klass::super()); } - virtual InstanceKlass* java_super() const { + InstanceKlass* java_super() const override { return InstanceKlass::super(); } @@ -949,10 +949,10 @@ public: (is_interface ? (int)sizeof(Klass*)/wordSize : 0)); } - int size() const { return size(vtable_length(), - itable_length(), - nonstatic_oop_map_size(), - is_interface()); + int size() const override { return size(vtable_length(), + itable_length(), + nonstatic_oop_map_size(), + is_interface()); } @@ -1008,15 +1008,15 @@ public: void static deallocate_record_components(ClassLoaderData* loader_data, Array* record_component); - virtual bool on_stack() const; + bool on_stack() const override; // callbacks for actions during class unloading static void unload_class(InstanceKlass* ik); - virtual void release_C_heap_structures(bool release_sub_metadata = true); + void release_C_heap_structures(bool release_sub_metadata = true) override; // Naming - const char* signature_name() const; + const char* signature_name() const override; // Oop fields (and metadata) iterators // @@ -1095,12 +1095,12 @@ public: oop init_lock() const; // Returns the array class for the n'th dimension - virtual ArrayKlass* array_klass(int n, TRAPS); - virtual ArrayKlass* array_klass_or_null(int n); + ArrayKlass* array_klass(int n, TRAPS) override; + ArrayKlass* array_klass_or_null(int n) override; // Returns the array class with this class as element type - virtual ArrayKlass* array_klass(TRAPS); - virtual ArrayKlass* array_klass_or_null(); + ArrayKlass* array_klass(TRAPS) override; + ArrayKlass* array_klass_or_null() override; static void clean_initialization_error_table(); private: @@ -1139,9 +1139,9 @@ public: #if INCLUDE_CDS // CDS support - remove and restore oops from metadata. Oops are not shared. - virtual void remove_unshareable_info(); + void remove_unshareable_info() override; void remove_unshareable_flags(); - virtual void remove_java_mirror(); + void remove_java_mirror() override; void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, PackageEntry* pkg_entry, TRAPS); void init_shared_package_entry(); bool can_be_verified_at_dumptime() const; @@ -1154,22 +1154,22 @@ public: _misc_flags.set_has_init_deps_processed(true); } - u2 compute_modifier_flags() const; + u2 compute_modifier_flags() const override; public: // JVMTI support - jint jvmti_class_status() const; + jint jvmti_class_status() const override; - virtual void metaspace_pointers_do(MetaspaceClosure* iter); + void metaspace_pointers_do(MetaspaceClosure* iter) override; public: // Printing - void print_on(outputStream* st) const; - void print_value_on(outputStream* st) const; + void print_on(outputStream* st) const override; + void print_value_on(outputStream* st) const override; - void oop_print_value_on(oop obj, outputStream* st); + void oop_print_value_on(oop obj, outputStream* st) override; - void oop_print_on (oop obj, outputStream* st); + void oop_print_on (oop obj, outputStream* st) override; #ifndef PRODUCT void print_dependent_nmethods(bool verbose = false); @@ -1177,12 +1177,12 @@ public: bool verify_itable_index(int index); #endif - const char* internal_name() const; + const char* internal_name() const override; // Verification - void verify_on(outputStream* st); + void verify_on(outputStream* st) override; - void oop_verify_on(oop obj, outputStream* st); + void oop_verify_on(oop obj, outputStream* st) override; // Logging void print_class_load_logging(ClassLoaderData* loader_data, diff --git a/src/hotspot/share/oops/instanceMirrorKlass.hpp b/src/hotspot/share/oops/instanceMirrorKlass.hpp index 4546f904eca..a89e573503d 100644 --- a/src/hotspot/share/oops/instanceMirrorKlass.hpp +++ b/src/hotspot/share/oops/instanceMirrorKlass.hpp @@ -67,7 +67,7 @@ class InstanceMirrorKlass: public InstanceKlass { } // Returns the size of the instance including the extra static fields. - virtual size_t oop_size(oop obj) const; + size_t oop_size(oop obj) const override; // Static field offset is an offset into the Heap, should be converted by // based on UseCompressedOop for traversal diff --git a/src/hotspot/share/oops/instanceRefKlass.hpp b/src/hotspot/share/oops/instanceRefKlass.hpp index c372b83a267..57126156dd8 100644 --- a/src/hotspot/share/oops/instanceRefKlass.hpp +++ b/src/hotspot/share/oops/instanceRefKlass.hpp @@ -126,7 +126,7 @@ class InstanceRefKlass: public InstanceKlass { public: // Verification - void oop_verify_on(oop obj, outputStream* st); + void oop_verify_on(oop obj, outputStream* st) override; }; #endif // SHARE_OOPS_INSTANCEREFKLASS_HPP diff --git a/src/hotspot/share/oops/klass.hpp b/src/hotspot/share/oops/klass.hpp index 25fb900e7d6..b6974762209 100644 --- a/src/hotspot/share/oops/klass.hpp +++ b/src/hotspot/share/oops/klass.hpp @@ -215,7 +215,7 @@ protected: enum class StaticLookupMode { find, skip }; enum class PrivateLookupMode { find, skip }; - virtual bool is_klass() const { return true; } + bool is_klass() const override { return true; } // super() cannot be InstanceKlass* -- Java arrays are covariant, and _super is used // to implement that. NB: the _super of "[Ljava/lang/Integer;" is "[Ljava/lang/Number;" @@ -649,9 +649,6 @@ public: // actual oop size of obj in memory in word size. virtual size_t oop_size(oop obj) const = 0; - // Size of klass in word size. - virtual int size() const = 0; - // Returns the Java name for a class (Resource allocated) // For arrays, this returns the name of the element with a leading '['. // For classes, this returns the name with the package separators @@ -728,8 +725,8 @@ public: JFR_ONLY(DEFINE_TRACE_ID_METHODS;) - virtual void metaspace_pointers_do(MetaspaceClosure* iter); - virtual MetaspaceObj::Type type() const { return ClassType; } + void metaspace_pointers_do(MetaspaceClosure* iter) override; + MetaspaceObj::Type type() const override { return ClassType; } inline bool is_loader_alive() const; inline bool is_loader_present_and_alive() const; @@ -764,15 +761,13 @@ public: virtual jint jvmti_class_status() const; // Printing - virtual void print_on(outputStream* st) const; + void print_on(outputStream* st) const override; virtual void oop_print_value_on(oop obj, outputStream* st); virtual void oop_print_on (oop obj, outputStream* st); void print_secondary_supers_on(outputStream* st) const; - virtual const char* internal_name() const = 0; - // Verification virtual void verify_on(outputStream* st); void verify() { verify_on(tty); } diff --git a/src/hotspot/share/oops/objArrayKlass.hpp b/src/hotspot/share/oops/objArrayKlass.hpp index 1a4f7f657d2..12db56351ed 100644 --- a/src/hotspot/share/oops/objArrayKlass.hpp +++ b/src/hotspot/share/oops/objArrayKlass.hpp @@ -72,29 +72,29 @@ class ObjArrayKlass : public ArrayKlass { void set_bottom_klass(Klass* k) { _bottom_klass = k; } Klass** bottom_klass_addr() { return &_bottom_klass; } - ModuleEntry* module() const; - PackageEntry* package() const; + ModuleEntry* module() const override; + PackageEntry* package() const override; // Dispatched operation - bool can_be_primary_super_slow() const; + bool can_be_primary_super_slow() const override; GrowableArray* compute_secondary_supers(int num_extra_slots, - Array* transitive_interfaces); - DEBUG_ONLY(bool is_objArray_klass_slow() const { return true; }) - size_t oop_size(oop obj) const; + Array* transitive_interfaces) override; + DEBUG_ONLY(bool is_objArray_klass_slow() const override { return true; }) + size_t oop_size(oop obj) const override; // Allocation static ObjArrayKlass* allocate_objArray_klass(ClassLoaderData* loader_data, int n, Klass* element_klass, TRAPS); - oop multi_allocate(int rank, jint* sizes, TRAPS); + oop multi_allocate(int rank, jint* sizes, TRAPS) override; // Copying - void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); + void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS) override; // Compute protection domain - oop protection_domain() const { return bottom_klass()->protection_domain(); } + oop protection_domain() const override { return bottom_klass()->protection_domain(); } - virtual void metaspace_pointers_do(MetaspaceClosure* iter); + virtual void metaspace_pointers_do(MetaspaceClosure* iter) override; private: // Either oop or narrowOop depending on UseCompressedOops. @@ -114,10 +114,10 @@ class ObjArrayKlass : public ArrayKlass { // Sizing static int header_size() { return sizeof(ObjArrayKlass)/wordSize; } - int size() const { return ArrayKlass::static_size(header_size()); } + int size() const override { return ArrayKlass::static_size(header_size()); } // Initialization (virtual from Klass) - void initialize(TRAPS); + void initialize(TRAPS) override; // Oop fields (and metadata) iterators // @@ -150,24 +150,24 @@ class ObjArrayKlass : public ArrayKlass { inline void oop_oop_iterate_elements_bounded(objArrayOop a, OopClosureType* closure, void* low, void* high); public: - u2 compute_modifier_flags() const; + u2 compute_modifier_flags() const override; public: // Printing - void print_on(outputStream* st) const; - void print_value_on(outputStream* st) const; + void print_on(outputStream* st) const override; + void print_value_on(outputStream* st) const override; - void oop_print_value_on(oop obj, outputStream* st); + void oop_print_value_on(oop obj, outputStream* st) override; #ifndef PRODUCT - void oop_print_on (oop obj, outputStream* st); + void oop_print_on (oop obj, outputStream* st) override; #endif //PRODUCT - const char* internal_name() const; + const char* internal_name() const override; // Verification - void verify_on(outputStream* st); + void verify_on(outputStream* st) override; - void oop_verify_on(oop obj, outputStream* st); + void oop_verify_on(oop obj, outputStream* st) override; }; #endif // SHARE_OOPS_OBJARRAYKLASS_HPP diff --git a/src/hotspot/share/oops/typeArrayKlass.hpp b/src/hotspot/share/oops/typeArrayKlass.hpp index 22600702fe2..87a41a6d4b3 100644 --- a/src/hotspot/share/oops/typeArrayKlass.hpp +++ b/src/hotspot/share/oops/typeArrayKlass.hpp @@ -56,10 +56,10 @@ class TypeArrayKlass : public ArrayKlass { jint max_length() { return _max_length; } void set_max_length(jint m) { _max_length = m; } - u2 compute_modifier_flags() const; + u2 compute_modifier_flags() const override; // testers - DEBUG_ONLY(bool is_typeArray_klass_slow() const { return true; }) + DEBUG_ONLY(bool is_typeArray_klass_slow() const override { return true; }) // klass allocation static TypeArrayKlass* create_klass(BasicType type, const char* name_str, @@ -68,15 +68,15 @@ class TypeArrayKlass : public ArrayKlass { return create_klass(type, external_name(type), THREAD); } - size_t oop_size(oop obj) const; + size_t oop_size(oop obj) const override; // Allocation - oop multi_allocate(int rank, jint* sizes, TRAPS); + oop multi_allocate(int rank, jint* sizes, TRAPS) override; - oop protection_domain() const { return nullptr; } + oop protection_domain() const override { return nullptr; } // Copying - void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); + void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS) override; // Oop iterators. Since there are no oops in TypeArrayKlasses, // these functions only return the size of the object. @@ -113,23 +113,23 @@ class TypeArrayKlass : public ArrayKlass { // Sizing static int header_size() { return sizeof(TypeArrayKlass)/wordSize; } - int size() const { return ArrayKlass::static_size(header_size()); } + int size() const override { return ArrayKlass::static_size(header_size()); } // Initialization (virtual from Klass) - void initialize(TRAPS); + void initialize(TRAPS) override; public: // Printing - void oop_print_on(oop obj, outputStream* st); + void oop_print_on(oop obj, outputStream* st) override; void oop_print_elements_on(typeArrayOop ta, outputStream* st); - void print_on(outputStream* st) const; - void print_value_on(outputStream* st) const; + void print_on(outputStream* st) const override; + void print_value_on(outputStream* st) const override; public: - const char* internal_name() const; + const char* internal_name() const override; - ModuleEntry* module() const; - PackageEntry* package() const; + ModuleEntry* module() const override; + PackageEntry* package() const override; }; #endif // SHARE_OOPS_TYPEARRAYKLASS_HPP