84 T* dst, int length, TRAPS);
85 protected:
86 // Returns the ObjArrayKlass for n'th dimension.
87 virtual Klass* array_klass_impl(bool or_null, int n, TRAPS);
88
89 // Returns the array class with this class as element type.
90 virtual Klass* array_klass_impl(bool or_null, TRAPS);
91
92 public:
93
94 static ObjArrayKlass* cast(Klass* k) {
95 return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
96 }
97
98 static const ObjArrayKlass* cast(const Klass* k) {
99 assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
100 return static_cast<const ObjArrayKlass*>(k);
101 }
102
103 // Sizing
104 static int header_size() { return sizeof(ObjArrayKlass)/HeapWordSize; }
105 int size() const { return ArrayKlass::static_size(header_size()); }
106
107 // Initialization (virtual from Klass)
108 void initialize(TRAPS);
109
110 // GC specific object visitors
111 //
112 // Mark Sweep
113 int oop_ms_adjust_pointers(oop obj);
114 #if INCLUDE_ALL_GCS
115 // Parallel Scavenge
116 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
117 // Parallel Compact
118 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
119 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
120 #endif
121
122 // Oop fields (and metadata) iterators
123 // [nv = true] Use non-virtual calls to do_oop_nv.
124 // [nv = false] Use virtual calls to do_oop.
|
84 T* dst, int length, TRAPS);
85 protected:
86 // Returns the ObjArrayKlass for n'th dimension.
87 virtual Klass* array_klass_impl(bool or_null, int n, TRAPS);
88
89 // Returns the array class with this class as element type.
90 virtual Klass* array_klass_impl(bool or_null, TRAPS);
91
92 public:
93
94 static ObjArrayKlass* cast(Klass* k) {
95 return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
96 }
97
98 static const ObjArrayKlass* cast(const Klass* k) {
99 assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
100 return static_cast<const ObjArrayKlass*>(k);
101 }
102
103 // Sizing
104 static int header_size() { return sizeof(ObjArrayKlass)/wordSize; }
105 int size() const { return ArrayKlass::static_size(header_size()); }
106
107 // Initialization (virtual from Klass)
108 void initialize(TRAPS);
109
110 // GC specific object visitors
111 //
112 // Mark Sweep
113 int oop_ms_adjust_pointers(oop obj);
114 #if INCLUDE_ALL_GCS
115 // Parallel Scavenge
116 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
117 // Parallel Compact
118 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
119 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
120 #endif
121
122 // Oop fields (and metadata) iterators
123 // [nv = true] Use non-virtual calls to do_oop_nv.
124 // [nv = false] Use virtual calls to do_oop.
|