Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8368693

Duplicate methods in vmClasses

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • None
    • None
    • hotspot
    • None

      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.

            asmehra Ashutosh Mehra
            asmehra Ashutosh Mehra
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: