< prev index next >
src/share/vm/oops/arrayKlass.hpp
Print this page
rev 8366 : 8080746: Refactor oop iteration macros to be more general
Reviewed-by:
*** 142,147 ****
--- 142,175 ----
void verify_on(outputStream* st);
void oop_verify_on(oop obj, outputStream* st);
};
+ // Array oop iteration macros for declarations.
+ #define OOP_OOP_ITERATE_RANGE_DECL(OopClosureType, nv_suffix) \
+ int oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* blk, \
+ int start, int end);
+
+ #if INCLUDE_ALL_GCS
+ // Named NO_BACKWARDS because the definition used by *ArrayKlass isn't reversed, see below.
+ #define OOP_OOP_ITERATE_NO_BACKWARDS_DECL(OopClosureType, nv_suffix) \
+ int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
+ #endif // INCLUDE_ALL_GCS
+
+ // Array oop iteration macros for definitions.
+ #define OOP_OOP_ITERATE_RANGE_DEFN(KlassType, OopClosureType, nv_suffix) \
+ \
+ int KlassType::oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* closure, int start, int end) { \
+ return oop_oop_iterate_range<nvs_to_bool(nv_suffix)>(obj, closure, start, end); \
+ }
+
+ #if INCLUDE_ALL_GCS
+ #define OOP_OOP_ITERATE_NO_BACKWARDS_DEFN(KlassType, OopClosureType, nv_suffix) \
+ int KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) { \
+ /* No reverse implementation ATM. */ \
+ return oop_oop_iterate<nvs_to_bool(nv_suffix)>(obj, closure); \
+ }
+ #else
+ #define OOP_OOP_ITERATE_NO_BACKWARDS_DEFN(KlassType, OopClosureType, nv_suffix)
+ #endif
+
#endif // SHARE_VM_OOPS_ARRAYKLASS_HPP
< prev index next >