< 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 >