< prev index next >

src/hotspot/share/oops/objArrayKlass.hpp

8211446: Replace oop_pc_follow_contents with oop_iterate and closure

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_follow_contents(oop obj, ParCompactionManager* cm);                                                          
127   void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);                                                          
128 #endif                                                                                                                     
129 
130   // Oop fields (and metadata) iterators                                                                                   
131   //                                                                                                                       
132   // The ObjArrayKlass iterators also visits the Object's klass.                                                           
133 
134   // Iterate over oop elements and metadata.                                                                               
135   template <typename T, typename OopClosureType>                                                                           
136   inline void oop_oop_iterate(oop obj, OopClosureType* closure);                                                           
137 
138   // Iterate over oop elements and metadata.                                                                               
139   template <typename T, typename OopClosureType>                                                                           
140   inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);                                                   
141 
142   // Iterate over oop elements within mr, and metadata.                                                                    
143   template <typename T, typename OopClosureType>                                                                           
144   inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);                                     
145 

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 
< prev index next >