--- old/src/share/vm/oops/valueArrayKlass.hpp 2017-06-16 14:34:20.717928419 +0200 +++ new/src/share/vm/oops/valueArrayKlass.hpp 2017-06-16 14:34:20.317928438 +0200 @@ -36,11 +36,8 @@ class ValueArrayKlass : public ArrayKlass { friend class VMStructs; private: - ValueKlass* _element_klass; // The klass of the elements of this array type - // Constructor ValueArrayKlass(Klass* element_klass, Symbol* name); - void set_element_klass(ValueKlass* k); static ValueArrayKlass* allocate_klass(Klass* element_klass, Symbol* name, TRAPS); protected: @@ -54,6 +51,9 @@ ValueArrayKlass() {} + virtual ValueKlass* element_klass() const; + virtual void set_element_klass(Klass* k); + // Casting from Klass* static ValueArrayKlass* cast(Klass* k) { assert(k->is_valueArray_klass(), "cast to ValueArrayKlass"); @@ -65,10 +65,6 @@ void initialize(TRAPS); - // Instance variables - ValueKlass* element_klass() const { return _element_klass; } - ValueKlass** element_klass_addr() { return &_element_klass; } - ModuleEntry* module() const; PackageEntry* package() const; @@ -76,8 +72,13 @@ bool is_valueArray_klass_slow() const { return true; } - bool contains_oops() { return element_klass()->contains_oops(); } - bool is_atomic() { return element_klass()->is_atomic(); } + bool contains_oops() { + return element_klass()->contains_oops(); + } + + bool is_atomic() { + return element_klass()->is_atomic(); + } oop protection_domain() const; @@ -101,9 +102,6 @@ // Copying void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS); - // Compiler/Interpreter offset - static ByteSize element_klass_offset() { return in_ByteSize(offset_of(ValueArrayKlass, _element_klass)); } - // GC specific object visitors // // Mark Sweep