95 public:
96
97 static ObjArrayKlass* cast(Klass* k) {
98 return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
99 }
100
101 static const ObjArrayKlass* cast(const Klass* k) {
102 assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
103 return static_cast<const ObjArrayKlass*>(k);
104 }
105
106 // Sizing
107 static int header_size() { return sizeof(ObjArrayKlass)/wordSize; }
108 int size() const { return ArrayKlass::static_size(header_size()); }
109
110 // Initialization (virtual from Klass)
111 void initialize(TRAPS);
112
113 // GC specific object visitors
114 //
115 // Mark Sweep
116 int oop_ms_adjust_pointers(oop obj);
117 #if INCLUDE_ALL_GCS
118 // Parallel Scavenge
119 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
120 // Parallel Compact
121 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
122 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
123 #endif
124
125 // Oop fields (and metadata) iterators
126 // [nv = true] Use non-virtual calls to do_oop_nv.
127 // [nv = false] Use virtual calls to do_oop.
128 //
129 // The ObjArrayKlass iterators also visits the Object's klass.
130
131 private:
132
133 // Iterate over oop elements and metadata.
134 template <bool nv, typename OopClosureType>
135 inline void oop_oop_iterate(oop obj, OopClosureType* closure);
136
|
95 public:
96
97 static ObjArrayKlass* cast(Klass* k) {
98 return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
99 }
100
101 static const ObjArrayKlass* cast(const Klass* k) {
102 assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
103 return static_cast<const ObjArrayKlass*>(k);
104 }
105
106 // Sizing
107 static int header_size() { return sizeof(ObjArrayKlass)/wordSize; }
108 int size() const { return ArrayKlass::static_size(header_size()); }
109
110 // Initialization (virtual from Klass)
111 void initialize(TRAPS);
112
113 // GC specific object visitors
114 //
115 #if INCLUDE_ALL_GCS
116 // Parallel Scavenge
117 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
118 // Parallel Compact
119 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
120 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
121 #endif
122
123 // Oop fields (and metadata) iterators
124 // [nv = true] Use non-virtual calls to do_oop_nv.
125 // [nv = false] Use virtual calls to do_oop.
126 //
127 // The ObjArrayKlass iterators also visits the Object's klass.
128
129 private:
130
131 // Iterate over oop elements and metadata.
132 template <bool nv, typename OopClosureType>
133 inline void oop_oop_iterate(oop obj, OopClosureType* closure);
134
|