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