69 int log2_element_size() const { return layout_helper_log2_element_size(layout_helper()); }
70 // type of elements (T_OBJECT for both oop arrays and array-arrays)
71 BasicType element_type() const { return layout_helper_element_type(layout_helper()); }
72
73 oop component_mirror() const { return _component_mirror; }
74 void set_component_mirror(oop m) { klass_oop_store(&_component_mirror, m); }
75 oop* adr_component_mirror() { return (oop*)&this->_component_mirror;}
76
77 // Compiler/Interpreter offset
78 static ByteSize component_mirror_offset() { return in_ByteSize(offset_of(ArrayKlass, _component_mirror)); }
79
80 virtual Klass* java_super() const;//{ return SystemDictionary::Object_klass(); }
81
82 // Allocation
83 // Sizes points to the first dimension of the array, subsequent dimensions
84 // are always in higher memory. The callers of these set that up.
85 virtual oop multi_allocate(int rank, jint* sizes, TRAPS);
86 objArrayOop allocate_arrayArray(int n, int length, TRAPS);
87
88 // Lookup operations
89 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const;
90
91 // Casting from Klass*
92 static ArrayKlass* cast(Klass* k) {
93 assert(k->oop_is_array(), "cast to ArrayKlass");
94 return (ArrayKlass*) k;
95 }
96
97 GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
98 bool compute_is_subtype_of(Klass* k);
99
100 // Sizing
101 static int header_size() { return sizeof(ArrayKlass)/HeapWordSize; }
102 static int static_size(int header_size);
103
104 #if INCLUDE_SERVICES
105 virtual void collect_statistics(KlassSizeStats *sz) const {
106 Klass::collect_statistics(sz);
107 // Do nothing for now, but remember to modify if you add new
108 // stuff to ArrayKlass.
109 }
|
69 int log2_element_size() const { return layout_helper_log2_element_size(layout_helper()); }
70 // type of elements (T_OBJECT for both oop arrays and array-arrays)
71 BasicType element_type() const { return layout_helper_element_type(layout_helper()); }
72
73 oop component_mirror() const { return _component_mirror; }
74 void set_component_mirror(oop m) { klass_oop_store(&_component_mirror, m); }
75 oop* adr_component_mirror() { return (oop*)&this->_component_mirror;}
76
77 // Compiler/Interpreter offset
78 static ByteSize component_mirror_offset() { return in_ByteSize(offset_of(ArrayKlass, _component_mirror)); }
79
80 virtual Klass* java_super() const;//{ return SystemDictionary::Object_klass(); }
81
82 // Allocation
83 // Sizes points to the first dimension of the array, subsequent dimensions
84 // are always in higher memory. The callers of these set that up.
85 virtual oop multi_allocate(int rank, jint* sizes, TRAPS);
86 objArrayOop allocate_arrayArray(int n, int length, TRAPS);
87
88 // Lookup operations
89 Method* uncached_lookup_method(Symbol* name, Symbol* signature, MethodLookupMode mode) const;
90
91 // Casting from Klass*
92 static ArrayKlass* cast(Klass* k) {
93 assert(k->oop_is_array(), "cast to ArrayKlass");
94 return (ArrayKlass*) k;
95 }
96
97 GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
98 bool compute_is_subtype_of(Klass* k);
99
100 // Sizing
101 static int header_size() { return sizeof(ArrayKlass)/HeapWordSize; }
102 static int static_size(int header_size);
103
104 #if INCLUDE_SERVICES
105 virtual void collect_statistics(KlassSizeStats *sz) const {
106 Klass::collect_statistics(sz);
107 // Do nothing for now, but remember to modify if you add new
108 // stuff to ArrayKlass.
109 }
|