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