< prev index next >

src/hotspot/share/oops/arrayKlass.hpp

Print this page

        

*** 40,56 **** --- 40,76 ---- int _dimension; // This is n'th-dimensional array. Klass* volatile _higher_dimension; // Refers the (n+1)'th-dimensional array (if present). Klass* volatile _lower_dimension; // Refers the (n-1)'th-dimensional array (if present). protected: + Klass* _element_klass; // The klass of the elements of this array type + // The element type must be registered for both object arrays + // (incl. object arrays with value type elements) and value type + // arrays containing flattened value types. However, the element + // type must not be registered for arrays of primitive types. + // TODO: Update the class hierarchy so that element klass appears + // only in array that contain non-primitive types. // Constructors // The constructor with the Symbol argument does the real array // initialization, the other is a dummy ArrayKlass(Symbol* name, KlassID id); ArrayKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for cds"); } + // Create array_name for element klass, creates a permanent symbol, returns result + static Symbol* create_element_klass_array_name(bool is_qtype, Klass* element_klass, TRAPS); + public: + // Instance variables + virtual Klass* element_klass() const { return _element_klass; } + virtual void set_element_klass(Klass* k) { _element_klass = k; } + + // Compiler/Interpreter offset + static ByteSize element_klass_offset() { return in_ByteSize(offset_of(ArrayKlass, _element_klass)); } + + // Presented with an ArrayKlass, which storage_properties should be encoded into arrayOop + virtual ArrayStorageProperties storage_properties() { return ArrayStorageProperties::empty; } + // Testing operation DEBUG_ONLY(bool is_array_klass_slow() const { return true; }) // Instance variables int dimension() const { return _dimension; }
*** 97,106 **** --- 117,128 ---- } GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots, Array<InstanceKlass*>* transitive_interfaces); + oop component_mirror() const; + // Sizing static int static_size(int header_size); virtual void metaspace_pointers_do(MetaspaceClosure* iter);
*** 112,122 **** } #endif // Iterators void array_klasses_do(void f(Klass* k)); - void array_klasses_do(void f(Klass* k, TRAPS), TRAPS); // Return a handle. static void complete_create_array_klass(ArrayKlass* k, Klass* super_klass, ModuleEntry* module, TRAPS); --- 134,143 ----
< prev index next >