src/share/vm/oops/objArrayKlass.hpp

Print this page
rev 6796 : [mq]: templateOopIterate
rev 6799 : [mq]: latestChanges
rev 6800 : [mq]: replaceTemplateDispatchWithMacroDispatch

@@ -41,11 +41,11 @@
   // Constructor
   ObjArrayKlass(int n, KlassHandle element_klass, Symbol* name);
   static ObjArrayKlass* allocate(ClassLoaderData* loader_data, int n, KlassHandle klass_handle, Symbol* name, TRAPS);
  public:
   // For dummy objects
-  ObjArrayKlass() {}
+  ObjArrayKlass() : ArrayKlass(_obj_array) {} 
 
   // Instance variables
   Klass* element_klass() const      { return _element_klass; }
   void set_element_klass(Klass* k)  { _element_klass = k; }
   Klass** element_klass_addr()      { return &_element_klass; }

@@ -116,26 +116,21 @@
   inline void oop_follow_contents(ParCompactionManager* cm, oop obj, int index);
   template <class T> inline void
     objarray_follow_contents(ParCompactionManager* cm, oop obj, int index);
 #endif // INCLUDE_ALL_GCS
 
-  // 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) {
-    return oop_oop_iterate_v_m(obj, blk, mr);
-  }
-#define ObjArrayKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)   \
-  int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);         \
-  int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk,      \
-                                     MemRegion mr);                     \
-  int oop_oop_iterate_range##nv_suffix(oop obj, OopClosureType* blk,    \
-                                     int start, int end);
+  template <bool nv, typename OopClosureType>
+  int oop_oop_iterate(oop obj, OopClosureType* closure);
+
+  template <bool nv, typename OopClosureType>
+  int oop_oop_iterate_m(oop obj, OopClosureType* blk, MemRegion mr);
+
+  template <bool nv, typename OopClosureType>
+  int oop_oop_iterate_backwards(oop obj, OopClosureType* blk);
 
-  ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
-  ALL_OOP_OOP_ITERATE_CLOSURES_2(ObjArrayKlass_OOP_OOP_ITERATE_DECL)
+  template <bool nv, typename OopClosureType>
+  int oop_oop_iterate_range_t(oop obj, OopClosureType* blk, int start, int end);
 
   // JVM support
   jint compute_modifier_flags(TRAPS) const;
 
  public: