< prev index next >

src/share/vm/oops/objArrayKlass.hpp

Print this page
rev 8366 : 8080746: Refactor oop iteration macros to be more general
Reviewed-by:
rev 8367 : [mq]: oop-macro-defn-rev1


 146   inline void oop_oop_iterate_elements(objArrayOop a, OopClosureType* closure);
 147 
 148  private:
 149   // Iterate over all oop elements.
 150   // Specialized for [T = oop] or [T = narrowOop].
 151   template <bool nv, typename T, class OopClosureType>
 152   inline void oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType* closure);
 153 
 154   // Iterate over all oop elements with indices within mr.
 155   template <bool nv, class OopClosureType>
 156   inline void oop_oop_iterate_elements_bounded(objArrayOop a, OopClosureType* closure, MemRegion mr);
 157 
 158   // Iterate over oop elements within [low, high)..
 159   // Specialized for [T = oop] or [T = narrowOop].
 160   template <bool nv, typename T, class OopClosureType>
 161   inline void oop_oop_iterate_elements_specialized_bounded(objArrayOop a, OopClosureType* closure, void* low, void* high);
 162 
 163 
 164  public:
 165 
 166 #define ObjArrayKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)   \
 167   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);         \
 168   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk,      \
 169                                      MemRegion mr);                     \
 170   int oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* blk,    \
 171                                      int start, int end);
 172 
 173   ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
 174   ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
 175 
 176 #if INCLUDE_ALL_GCS
 177 #define ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \
 178   int  oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
 179 
 180   ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
 181   ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
 182 #endif // INCLUDE_ALL_GCS
 183 
 184   // JVM support
 185   jint compute_modifier_flags(TRAPS) const;
 186 
 187  public:
 188   // Printing
 189   void print_on(outputStream* st) const;
 190   void print_value_on(outputStream* st) const;
 191 
 192   void oop_print_value_on(oop obj, outputStream* st);
 193 #ifndef PRODUCT
 194   void oop_print_on      (oop obj, outputStream* st);
 195 #endif //PRODUCT
 196 
 197   const char* internal_name() const;
 198 
 199   // Verification
 200   void verify_on(outputStream* st);
 201 


 146   inline void oop_oop_iterate_elements(objArrayOop a, OopClosureType* closure);
 147 
 148  private:
 149   // Iterate over all oop elements.
 150   // Specialized for [T = oop] or [T = narrowOop].
 151   template <bool nv, typename T, class OopClosureType>
 152   inline void oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType* closure);
 153 
 154   // Iterate over all oop elements with indices within mr.
 155   template <bool nv, class OopClosureType>
 156   inline void oop_oop_iterate_elements_bounded(objArrayOop a, OopClosureType* closure, MemRegion mr);
 157 
 158   // Iterate over oop elements within [low, high)..
 159   // Specialized for [T = oop] or [T = narrowOop].
 160   template <bool nv, typename T, class OopClosureType>
 161   inline void oop_oop_iterate_elements_specialized_bounded(objArrayOop a, OopClosureType* closure, void* low, void* high);
 162 
 163 
 164  public:
 165 
 166   ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL)
 167   ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL)
 168   ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL_RANGE)
 169   ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL_RANGE)





 170 
 171 #if INCLUDE_ALL_GCS
 172   ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL_NO_BACKWARDS)
 173   ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL_NO_BACKWARDS)



 174 #endif // INCLUDE_ALL_GCS
 175 
 176   // JVM support
 177   jint compute_modifier_flags(TRAPS) const;
 178 
 179  public:
 180   // Printing
 181   void print_on(outputStream* st) const;
 182   void print_value_on(outputStream* st) const;
 183 
 184   void oop_print_value_on(oop obj, outputStream* st);
 185 #ifndef PRODUCT
 186   void oop_print_on      (oop obj, outputStream* st);
 187 #endif //PRODUCT
 188 
 189   const char* internal_name() const;
 190 
 191   // Verification
 192   void verify_on(outputStream* st);
 193 
< prev index next >