src/share/vm/oops/oop.inline.hpp

Print this page
rev 6796 : [mq]: templateOopIterate
rev 6799 : [mq]: latestChanges
rev 6800 : [mq]: replaceTemplateDispatchWithMacroDispatch
rev 6801 : imported patch defaultToTrue

@@ -24,12 +24,10 @@
 
 #ifndef SHARE_VM_OOPS_OOP_INLINE_HPP
 #define SHARE_VM_OOPS_OOP_INLINE_HPP
 
 #include "gc_implementation/shared/ageTable.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
 #include "memory/barrierSet.inline.hpp"
 #include "memory/cardTableModRefBS.hpp"
 #include "memory/genCollectedHeap.hpp"
 #include "memory/generation.hpp"
 #include "memory/specialized_oop_closures.hpp"

@@ -689,22 +687,26 @@
   int s = klass()->oop_adjust_pointers(this);
   assert(s == check_size, "should be the same");
   return s;
 }
 
-#define OOP_ITERATE_DEFN(OopClosureType, nv_suffix)                        \
-                                                                           \
-inline int oopDesc::oop_iterate(OopClosureType* blk) {                     \
-  SpecializationStats::record_call();                                      \
-  return klass()->oop_oop_iterate##nv_suffix(this, blk);               \
-}                                                                          \
-                                                                           \
-inline int oopDesc::oop_iterate(OopClosureType* blk, MemRegion mr) {       \
-  SpecializationStats::record_call();                                      \
-  return klass()->oop_oop_iterate##nv_suffix##_m(this, blk, mr);       \
+template <bool nv, typename OopClosureType>
+inline int oopDesc::oop_iterate(OopClosureType* blk) {
+  CONCRETE_KLASS_DO_AND_RETURN(klass(), oop_oop_iterate<nv>(this,blk));
 }
 
+template <bool nv, typename OopClosureType>
+inline int oopDesc::oop_iterate(OopClosureType* blk, MemRegion mr) {
+  CONCRETE_KLASS_DO_AND_RETURN(klass(), oop_oop_iterate_m<nv>(this,blk,mr));
+}
+
+#if INCLUDE_ALL_GCS
+template <bool nv, typename OopClosureType>
+inline int oopDesc::oop_iterate_backwards(OopClosureType* blk) {
+  CONCRETE_KLASS_DO_AND_RETURN(klass(), oop_oop_iterate_backwards<nv>(this, blk));
+}
+#endif // INCLUDE_ALL_GCS
 
 inline int oopDesc::oop_iterate_no_header(OopClosure* blk) {
   // The NoHeaderExtendedOopClosure wraps the OopClosure and proxies all
   // the do_oop calls, but turns off all other features in ExtendedOopClosure.
   NoHeaderExtendedOopClosure cl(blk);

@@ -714,21 +716,6 @@
 inline int oopDesc::oop_iterate_no_header(OopClosure* blk, MemRegion mr) {
   NoHeaderExtendedOopClosure cl(blk);
   return oop_iterate(&cl, mr);
 }
 
-ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_DEFN)
-ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_DEFN)
-
-#if INCLUDE_ALL_GCS
-#define OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix)              \
-                                                                           \
-inline int oopDesc::oop_iterate_backwards(OopClosureType* blk) {           \
-  SpecializationStats::record_call();                                      \
-  return klass()->oop_oop_iterate_backwards##nv_suffix(this, blk);     \
-}
-
-ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_BACKWARDS_DEFN)
-ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_BACKWARDS_DEFN)
-#endif // INCLUDE_ALL_GCS
-
 #endif // SHARE_VM_OOPS_OOP_INLINE_HPP