--- old/src/share/vm/classfile/javaClasses.hpp 2014-10-17 13:54:44.285439204 -0400 +++ new/src/share/vm/classfile/javaClasses.hpp 2014-10-17 13:54:44.145434252 -0400 @@ -243,6 +243,7 @@ static int _component_mirror_offset; static bool offsets_computed; + static int _classData_offset; static int classRedefinedCount_offset; static GrowableArray* _fixup_mirror_list; @@ -285,6 +286,9 @@ // compiler support for class operations static int klass_offset_in_bytes() { return _klass_offset; } static int array_klass_offset_in_bytes() { return _array_klass_offset; } + + static oop classData(oop obj); + // Support for classRedefinedCount field static int classRedefinedCount(oop the_class_mirror); static void set_classRedefinedCount(oop the_class_mirror, int value); @@ -315,6 +319,25 @@ friend class ClassFileParser; // access to number_of_fake_fields }; +/** + * java.lang.Class$ClassData + */ +class java_lang_Class_ClassData : AllStatic { + friend class JavaClasses; + + private: + static int _elementData_offset; + static int _size_offset; + + static void compute_offsets(); + + public: + static bool is_instance(oop obj); + static oop memberNameTable(oop obj); + static objArrayOop elementData(oop obj); + static int size(oop obj); +}; + // Interface to java.lang.Thread objects class java_lang_Thread : AllStatic {