77 78 private: 79 // The implementation used by all oop_oop_iterate functions in TypeArrayKlasses. 80 inline void oop_oop_iterate_impl(oop obj, OopIterateClosure* closure); 81 82 public: 83 // Wraps oop_oop_iterate_impl to conform to macros. 84 template <typename T, typename OopClosureType> 85 inline void oop_oop_iterate(oop obj, OopClosureType* closure); 86 87 // Wraps oop_oop_iterate_impl to conform to macros. 88 template <typename T, typename OopClosureType> 89 inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr); 90 91 // Wraps oop_oop_iterate_impl to conform to macros. 92 template <typename T, typename OopClosureType> 93 inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure); 94 95 protected: 96 // Find n'th dimensional array 97 virtual Klass* array_klass_impl(bool or_null, int n, TRAPS); 98 99 // Returns the array class with this class as element type 100 virtual Klass* array_klass_impl(bool or_null, TRAPS); 101 102 public: 103 static TypeArrayKlass* cast(Klass* k) { 104 return const_cast<TypeArrayKlass*>(cast(const_cast<const Klass*>(k))); 105 } 106 107 static const TypeArrayKlass* cast(const Klass* k) { 108 assert(k->is_typeArray_klass(), "cast to TypeArrayKlass"); 109 return static_cast<const TypeArrayKlass*>(k); 110 } 111 112 // Naming 113 static const char* external_name(BasicType type); 114 115 // Sizing 116 static int header_size() { return sizeof(TypeArrayKlass)/wordSize; } 117 int size() const { return ArrayKlass::static_size(header_size()); } 118 119 // Initialization (virtual from Klass) 120 void initialize(TRAPS); | 77 78 private: 79 // The implementation used by all oop_oop_iterate functions in TypeArrayKlasses. 80 inline void oop_oop_iterate_impl(oop obj, OopIterateClosure* closure); 81 82 public: 83 // Wraps oop_oop_iterate_impl to conform to macros. 84 template <typename T, typename OopClosureType> 85 inline void oop_oop_iterate(oop obj, OopClosureType* closure); 86 87 // Wraps oop_oop_iterate_impl to conform to macros. 88 template <typename T, typename OopClosureType> 89 inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr); 90 91 // Wraps oop_oop_iterate_impl to conform to macros. 92 template <typename T, typename OopClosureType> 93 inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure); 94 95 protected: 96 // Find n'th dimensional array 97 virtual Klass* array_klass_impl(ArrayStorageProperties storage_props, bool or_null, int n, TRAPS); 98 99 // Returns the array class with this class as element type 100 virtual Klass* array_klass_impl(ArrayStorageProperties storage_props, bool or_null, TRAPS); 101 102 public: 103 static TypeArrayKlass* cast(Klass* k) { 104 return const_cast<TypeArrayKlass*>(cast(const_cast<const Klass*>(k))); 105 } 106 107 static const TypeArrayKlass* cast(const Klass* k) { 108 assert(k->is_typeArray_klass(), "cast to TypeArrayKlass"); 109 return static_cast<const TypeArrayKlass*>(k); 110 } 111 112 // Naming 113 static const char* external_name(BasicType type); 114 115 // Sizing 116 static int header_size() { return sizeof(TypeArrayKlass)/wordSize; } 117 int size() const { return ArrayKlass::static_size(header_size()); } 118 119 // Initialization (virtual from Klass) 120 void initialize(TRAPS); |