106 static ObjArrayKlass* cast(Klass* k) {
107 return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
108 }
109
110 static const ObjArrayKlass* cast(const Klass* k) {
111 assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
112 return static_cast<const ObjArrayKlass*>(k);
113 }
114
115 // Sizing
116 static int header_size() { return sizeof(ObjArrayKlass)/wordSize; }
117 int size() const { return ArrayKlass::static_size(header_size()); }
118
119 // Initialization (virtual from Klass)
120 void initialize(TRAPS);
121
122 // GC specific object visitors
123 //
124 #if INCLUDE_PARALLELGC
125 // Parallel Compact
126 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
127 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
128 #endif
129
130 // Oop fields (and metadata) iterators
131 //
132 // The ObjArrayKlass iterators also visits the Object's klass.
133
134 // Iterate over oop elements and metadata.
135 template <typename T, typename OopClosureType>
136 inline void oop_oop_iterate(oop obj, OopClosureType* closure);
137
138 // Iterate over oop elements and metadata.
139 template <typename T, typename OopClosureType>
140 inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
141
142 // Iterate over oop elements within mr, and metadata.
143 template <typename T, typename OopClosureType>
144 inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
145
|
106 static ObjArrayKlass* cast(Klass* k) {
107 return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
108 }
109
110 static const ObjArrayKlass* cast(const Klass* k) {
111 assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
112 return static_cast<const ObjArrayKlass*>(k);
113 }
114
115 // Sizing
116 static int header_size() { return sizeof(ObjArrayKlass)/wordSize; }
117 int size() const { return ArrayKlass::static_size(header_size()); }
118
119 // Initialization (virtual from Klass)
120 void initialize(TRAPS);
121
122 // GC specific object visitors
123 //
124 #if INCLUDE_PARALLELGC
125 // Parallel Compact
126 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
127 #endif
128
129 // Oop fields (and metadata) iterators
130 //
131 // The ObjArrayKlass iterators also visits the Object's klass.
132
133 // Iterate over oop elements and metadata.
134 template <typename T, typename OopClosureType>
135 inline void oop_oop_iterate(oop obj, OopClosureType* closure);
136
137 // Iterate over oop elements and metadata.
138 template <typename T, typename OopClosureType>
139 inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
140
141 // Iterate over oop elements within mr, and metadata.
142 template <typename T, typename OopClosureType>
143 inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
144
|