vmClasses generates methods, using macros, for checking if a class is loaded:
https://github.com/openjdk/jdk/blob/8ca1feaf7e29c1370853b9b95c2ee7a62c6b84b7/src/hotspot/share/classfile/vmClasses.hpp#L85
#define _VM_CLASS_DECLARE(name, symbol) \
static InstanceKlass* name() { return check_klass(VM_CLASS_AT(name)); } \
static InstanceKlass** name##_addr() { return &VM_CLASS_AT(name); } \
static bool name##_is_loaded() { return is_loaded(VM_CLASS_AT(name)); }
VM_CLASSES_DO(_VM_CLASS_DECLARE);
#undef _VM_CLASS_DECLARE
But then it also explicitly declares differently named methods for some classes:
https://github.com/openjdk/jdk/blob/8ca1feaf7e29c1370853b9b95c2ee7a62c6b84b7/src/hotspot/share/classfile/vmClasses.hpp#L106-L110
static bool Object_klass_loaded() { return is_loaded(VM_CLASS_AT(Object_klass)); }
static bool Class_klass_loaded() { return is_loaded(VM_CLASS_AT(Class_klass)); }
static bool Cloneable_klass_loaded() { return is_loaded(VM_CLASS_AT(Cloneable_klass)); }
static bool Parameter_klass_loaded() { return is_loaded(VM_CLASS_AT(reflect_Parameter_klass)); }
static bool ClassLoader_klass_loaded() { return is_loaded(VM_CLASS_AT(ClassLoader_klass)); }
These X_klass_loaded() methods are redundant and their use can be replaced with the generated X_klass_is_loaded() method.
https://github.com/openjdk/jdk/blob/8ca1feaf7e29c1370853b9b95c2ee7a62c6b84b7/src/hotspot/share/classfile/vmClasses.hpp#L85
#define _VM_CLASS_DECLARE(name, symbol) \
static InstanceKlass* name() { return check_klass(VM_CLASS_AT(name)); } \
static InstanceKlass** name##_addr() { return &VM_CLASS_AT(name); } \
static bool name##_is_loaded() { return is_loaded(VM_CLASS_AT(name)); }
VM_CLASSES_DO(_VM_CLASS_DECLARE);
#undef _VM_CLASS_DECLARE
But then it also explicitly declares differently named methods for some classes:
https://github.com/openjdk/jdk/blob/8ca1feaf7e29c1370853b9b95c2ee7a62c6b84b7/src/hotspot/share/classfile/vmClasses.hpp#L106-L110
static bool Object_klass_loaded() { return is_loaded(VM_CLASS_AT(Object_klass)); }
static bool Class_klass_loaded() { return is_loaded(VM_CLASS_AT(Class_klass)); }
static bool Cloneable_klass_loaded() { return is_loaded(VM_CLASS_AT(Cloneable_klass)); }
static bool Parameter_klass_loaded() { return is_loaded(VM_CLASS_AT(reflect_Parameter_klass)); }
static bool ClassLoader_klass_loaded() { return is_loaded(VM_CLASS_AT(ClassLoader_klass)); }
These X_klass_loaded() methods are redundant and their use can be replaced with the generated X_klass_is_loaded() method.
- caused by
-
JDK-8212642 Remove SystemDictionary::InitOption enum
-
- Resolved
-
- links to
-
Review(master) openjdk/jdk/27503