< 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,6 +142,34 @@
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 >