< prev index next >
src/share/vm/memory/iterator.inline.hpp
Print this page
rev 7183 : autospecialized oop_iterate using SFINAE and templates
*** 27,36 ****
--- 27,57 ----
#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 >