146 inline void oop_oop_iterate_elements(objArrayOop a, OopClosureType* closure);
147
148 private:
149 // Iterate over all oop elements.
150 // Specialized for [T = oop] or [T = narrowOop].
151 template <bool nv, typename T, class OopClosureType>
152 inline void oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType* closure);
153
154 // Iterate over all oop elements with indices within mr.
155 template <bool nv, class OopClosureType>
156 inline void oop_oop_iterate_elements_bounded(objArrayOop a, OopClosureType* closure, MemRegion mr);
157
158 // Iterate over oop elements within [low, high)..
159 // Specialized for [T = oop] or [T = narrowOop].
160 template <bool nv, typename T, class OopClosureType>
161 inline void oop_oop_iterate_elements_specialized_bounded(objArrayOop a, OopClosureType* closure, void* low, void* high);
162
163
164 public:
165
166 #define ObjArrayKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \
167 int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk); \
168 int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, \
169 MemRegion mr); \
170 int oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* blk, \
171 int start, int end);
172
173 ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
174 ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
175
176 #if INCLUDE_ALL_GCS
177 #define ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \
178 int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
179
180 ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
181 ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
182 #endif // INCLUDE_ALL_GCS
183
184 // JVM support
185 jint compute_modifier_flags(TRAPS) const;
186
187 public:
188 // Printing
189 void print_on(outputStream* st) const;
190 void print_value_on(outputStream* st) const;
191
192 void oop_print_value_on(oop obj, outputStream* st);
193 #ifndef PRODUCT
194 void oop_print_on (oop obj, outputStream* st);
195 #endif //PRODUCT
196
197 const char* internal_name() const;
198
199 // Verification
200 void verify_on(outputStream* st);
201
|
146 inline void oop_oop_iterate_elements(objArrayOop a, OopClosureType* closure);
147
148 private:
149 // Iterate over all oop elements.
150 // Specialized for [T = oop] or [T = narrowOop].
151 template <bool nv, typename T, class OopClosureType>
152 inline void oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType* closure);
153
154 // Iterate over all oop elements with indices within mr.
155 template <bool nv, class OopClosureType>
156 inline void oop_oop_iterate_elements_bounded(objArrayOop a, OopClosureType* closure, MemRegion mr);
157
158 // Iterate over oop elements within [low, high)..
159 // Specialized for [T = oop] or [T = narrowOop].
160 template <bool nv, typename T, class OopClosureType>
161 inline void oop_oop_iterate_elements_specialized_bounded(objArrayOop a, OopClosureType* closure, void* low, void* high);
162
163
164 public:
165
166 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL)
167 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL)
168 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL_RANGE)
169 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL_RANGE)
170
171 #if INCLUDE_ALL_GCS
172 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL_NO_BACKWARDS)
173 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL_NO_BACKWARDS)
174 #endif // INCLUDE_ALL_GCS
175
176 // JVM support
177 jint compute_modifier_flags(TRAPS) const;
178
179 public:
180 // Printing
181 void print_on(outputStream* st) const;
182 void print_value_on(outputStream* st) const;
183
184 void oop_print_value_on(oop obj, outputStream* st);
185 #ifndef PRODUCT
186 void oop_print_on (oop obj, outputStream* st);
187 #endif //PRODUCT
188
189 const char* internal_name() const;
190
191 // Verification
192 void verify_on(outputStream* st);
193
|