< prev index next >

src/share/vm/memory/iterator.inline.hpp

Print this page
rev 7183 : autospecialized oop_iterate using SFINAE and templates

@@ -27,10 +27,31 @@
 
 #include "classfile/classLoaderData.hpp"
 #include "memory/iterator.hpp"
 #include "oops/klass.hpp"
 #include "utilities/debug.hpp"
+#include "specialized_oop_closures.inline.hpp"
+
+template<class OopClosureType, class OopType>
+inline void OopClosure::do_oop_auto(OopType* o) {
+  OopClosureDispatcher::template do_oop<OopClosureType, OopType>(static_cast<OopClosureType*>(this), o);
+}
+
+template<class OopClosureType>
+inline bool ExtendedOopClosure::do_metadata_auto() {
+  return OopClosureDispatcher::template do_metadata<OopClosureType>(static_cast<OopClosureType*>(this));
+}
+
+template<class OopClosureType>
+inline void ExtendedOopClosure::do_klass_auto(Klass* klass) {
+  OopClosureDispatcher::template do_klass<OopClosureType>(static_cast<OopClosureType*>(this), klass);
+}
+
+template<class OopClosureType>
+inline void ExtendedOopClosure::do_class_loader_data_auto(ClassLoaderData* cld) {
+  OopClosureType::template do_class_loader_data<OopClosureType>(static_cast<OopClosureType*>(this), cld);
+}
 
 inline void MetadataAwareOopClosure::do_class_loader_data(ClassLoaderData* cld) {
   assert(_klass_closure._oop_closure == this, "Must be");
 
   bool claim = true;  // Must claim the class loader data before processing.
< prev index next >