29 #include "oops/klass.hpp" |
29 #include "oops/klass.hpp" |
30 #include "oops/oop.inline.hpp" |
30 #include "oops/oop.inline.hpp" |
31 #include "oops/typeArrayKlass.hpp" |
31 #include "oops/typeArrayKlass.hpp" |
32 #include "oops/typeArrayOop.hpp" |
32 #include "oops/typeArrayOop.hpp" |
33 |
33 |
34 class ExtendedOopClosure; |
34 class OopIterateClosure; |
35 |
35 |
36 inline void TypeArrayKlass::oop_oop_iterate_impl(oop obj, ExtendedOopClosure* closure) { |
36 inline void TypeArrayKlass::oop_oop_iterate_impl(oop obj, OopIterateClosure* closure) { |
37 assert(obj->is_typeArray(),"must be a type array"); |
37 assert(obj->is_typeArray(),"must be a type array"); |
38 // Performance tweak: We skip iterating over the klass pointer since we |
38 // Performance tweak: We skip processing the klass pointer since all |
39 // know that Universe::TypeArrayKlass never moves. |
39 // TypeArrayKlasses are guaranteed processed via the null class loader. |
40 } |
40 } |
41 |
41 |
42 template <bool nv, typename OopClosureType> |
42 template <typename T, typename OopClosureType> |
43 void TypeArrayKlass::oop_oop_iterate(oop obj, OopClosureType* closure) { |
43 void TypeArrayKlass::oop_oop_iterate(oop obj, OopClosureType* closure) { |
44 oop_oop_iterate_impl(obj, closure); |
44 oop_oop_iterate_impl(obj, closure); |
45 } |
45 } |
46 |
46 |
47 template <bool nv, typename OopClosureType> |
47 template <typename T, typename OopClosureType> |
48 void TypeArrayKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) { |
48 void TypeArrayKlass::oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr) { |
49 oop_oop_iterate_impl(obj, closure); |
49 oop_oop_iterate_impl(obj, closure); |
50 } |
50 } |
51 |
51 |
52 #define ALL_TYPE_ARRAY_KLASS_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix) \ |
52 template <typename T, typename OopClosureType> |
53 OOP_OOP_ITERATE_DEFN( TypeArrayKlass, OopClosureType, nv_suffix) \ |
53 void TypeArrayKlass::oop_oop_iterate_reverse(oop obj, OopClosureType* closure) { |
54 OOP_OOP_ITERATE_DEFN_BOUNDED( TypeArrayKlass, OopClosureType, nv_suffix) \ |
54 oop_oop_iterate_impl(obj, closure); |
55 OOP_OOP_ITERATE_DEFN_NO_BACKWARDS(TypeArrayKlass, OopClosureType, nv_suffix) |
55 } |
56 |
56 |
57 #endif // SHARE_VM_OOPS_TYPEARRAYKLASS_INLINE_HPP |
57 #endif // SHARE_VM_OOPS_TYPEARRAYKLASS_INLINE_HPP |