88 // Returns the array class with this class as element type.
89 virtual Klass* array_klass_impl(bool or_null, TRAPS);
90
91 public:
92 // Casting from Klass*
93 static ObjArrayKlass* cast(Klass* k) {
94 assert(k->oop_is_objArray(), "cast to ObjArrayKlass");
95 return (ObjArrayKlass*) k;
96 }
97
98 // Sizing
99 static int header_size() { return sizeof(ObjArrayKlass)/HeapWordSize; }
100 int size() const { return ArrayKlass::static_size(header_size()); }
101
102 // Initialization (virtual from Klass)
103 void initialize(TRAPS);
104
105 // GC specific object visitors
106 //
107 // Mark Sweep
108 void oop_ms_follow_contents(oop obj);
109 int oop_ms_adjust_pointers(oop obj);
110 #if INCLUDE_ALL_GCS
111 // Parallel Scavenge
112 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
113 // Parallel Compact
114 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
115 void oop_pc_update_pointers(oop obj);
116 #endif
117
118 // Oop fields (and metadata) iterators
119 // [nv = true] Use non-virtual calls to do_oop_nv.
120 // [nv = false] Use virtual calls to do_oop.
121 //
122 // The ObjArrayKlass iterators also visits the Object's klass.
123
124 private:
125
126 // Iterate over oop elements and metadata.
127 template <bool nv, typename OopClosureType>
128 inline int oop_oop_iterate(oop obj, OopClosureType* closure);
|
88 // Returns the array class with this class as element type.
89 virtual Klass* array_klass_impl(bool or_null, TRAPS);
90
91 public:
92 // Casting from Klass*
93 static ObjArrayKlass* cast(Klass* k) {
94 assert(k->oop_is_objArray(), "cast to ObjArrayKlass");
95 return (ObjArrayKlass*) k;
96 }
97
98 // Sizing
99 static int header_size() { return sizeof(ObjArrayKlass)/HeapWordSize; }
100 int size() const { return ArrayKlass::static_size(header_size()); }
101
102 // Initialization (virtual from Klass)
103 void initialize(TRAPS);
104
105 // GC specific object visitors
106 //
107 // Mark Sweep
108 int oop_ms_adjust_pointers(oop obj);
109 #if INCLUDE_ALL_GCS
110 // Parallel Scavenge
111 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
112 // Parallel Compact
113 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
114 void oop_pc_update_pointers(oop obj);
115 #endif
116
117 // Oop fields (and metadata) iterators
118 // [nv = true] Use non-virtual calls to do_oop_nv.
119 // [nv = false] Use virtual calls to do_oop.
120 //
121 // The ObjArrayKlass iterators also visits the Object's klass.
122
123 private:
124
125 // Iterate over oop elements and metadata.
126 template <bool nv, typename OopClosureType>
127 inline int oop_oop_iterate(oop obj, OopClosureType* closure);
|