< prev index next >

src/share/vm/oops/instanceClassLoaderKlass.hpp

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

@@ -45,10 +45,26 @@
 public:
   virtual bool oop_is_instanceClassLoader() const { return true; }
 
   InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
 
+
+private:
+  template<class OopClosureType>
+  typename enable_if<!is_kind_of<ExtendedOopClosure, OopClosureType>::value, void>::type
+  do_metadata_if_applicable(oop obj, OopClosureType *cl);
+
+  template<class OopClosureType>
+  typename enable_if<is_kind_of<ExtendedOopClosure, OopClosureType>::value, void>::type
+  do_metadata_if_applicable(oop obj, OopClosureType *cl); 
+
+public:
+  template<class OopClosureType>
+  int oop_iterate_and_dispatch(oop obj, OopClosureType *cl); 
+
+  int get_linear_oop_intervals(oop obj, OopInterval* &start, int &size) { return -_instance_class_loader_klass; }
+
   // Iterators
   int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate_v(obj, blk);
   }
   int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
< prev index next >