< prev index next >

src/hotspot/share/oops/objArrayKlass.hpp

8211447: Replace oop_pc_update_pointers with oop_iterate and closure

102   virtual Klass* array_klass_impl(bool or_null, TRAPS);                                                                    
103 
104  public:                                                                                                                   
105 
106   static ObjArrayKlass* cast(Klass* k) {                                                                                   
107     return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));                                                  
108   }                                                                                                                        
109 
110   static const ObjArrayKlass* cast(const Klass* k) {                                                                       
111     assert(k->is_objArray_klass(), "cast to ObjArrayKlass");                                                               
112     return static_cast<const ObjArrayKlass*>(k);                                                                           
113   }                                                                                                                        
114 
115   // Sizing                                                                                                                
116   static int header_size()                { return sizeof(ObjArrayKlass)/wordSize; }                                       
117   int size() const                        { return ArrayKlass::static_size(header_size()); }                               
118 
119   // Initialization (virtual from Klass)                                                                                   
120   void initialize(TRAPS);                                                                                                  
121 
122   // GC specific object visitors                                                                                           
123   //                                                                                                                       
124 #if INCLUDE_PARALLELGC                                                                                                     
125   // Parallel Compact                                                                                                      
126   void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);                                                          
127 #endif                                                                                                                     
128                                                                                                                            
129   // Oop fields (and metadata) iterators                                                                                   
130   //                                                                                                                       
131   // The ObjArrayKlass iterators also visits the Object's klass.                                                           
132 
133   // Iterate over oop elements and metadata.                                                                               
134   template <typename T, typename OopClosureType>                                                                           
135   inline void oop_oop_iterate(oop obj, OopClosureType* closure);                                                           
136 
137   // Iterate over oop elements and metadata.                                                                               
138   template <typename T, typename OopClosureType>                                                                           
139   inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);                                                   
140 
141   // Iterate over oop elements within mr, and metadata.                                                                    
142   template <typename T, typename OopClosureType>                                                                           
143   inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);                                     
144 
145   // Iterate over oop elements within [start, end), and metadata.                                                          
146   template <typename T, class OopClosureType>                                                                              
147   inline void oop_oop_iterate_range(objArrayOop a, OopClosureType* closure, int start, int end);                           

102   virtual Klass* array_klass_impl(bool or_null, TRAPS);
103 
104  public:
105 
106   static ObjArrayKlass* cast(Klass* k) {
107     return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
108   }
109 
110   static const ObjArrayKlass* cast(const Klass* k) {
111     assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
112     return static_cast<const ObjArrayKlass*>(k);
113   }
114 
115   // Sizing
116   static int header_size()                { return sizeof(ObjArrayKlass)/wordSize; }
117   int size() const                        { return ArrayKlass::static_size(header_size()); }
118 
119   // Initialization (virtual from Klass)
120   void initialize(TRAPS);
121 







122   // Oop fields (and metadata) iterators
123   //
124   // The ObjArrayKlass iterators also visits the Object's klass.
125 
126   // Iterate over oop elements and metadata.
127   template <typename T, typename OopClosureType>
128   inline void oop_oop_iterate(oop obj, OopClosureType* closure);
129 
130   // Iterate over oop elements and metadata.
131   template <typename T, typename OopClosureType>
132   inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
133 
134   // Iterate over oop elements within mr, and metadata.
135   template <typename T, typename OopClosureType>
136   inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
137 
138   // Iterate over oop elements within [start, end), and metadata.
139   template <typename T, class OopClosureType>
140   inline void oop_oop_iterate_range(objArrayOop a, OopClosureType* closure, int start, int end);
< prev index next >