hotspot/src/share/vm/oops/klass.hpp
changeset 32606 fdaa30d06ada
parent 32189 5264b560ab1b
child 33105 294e48b4f704
equal deleted inserted replaced
32605:dab0de4ff7ff 32606:fdaa30d06ada
   570   }
   570   }
   571 
   571 
   572   // GC specific object visitors
   572   // GC specific object visitors
   573   //
   573   //
   574   // Mark Sweep
   574   // Mark Sweep
   575   virtual void oop_ms_follow_contents(oop obj) = 0;
       
   576   virtual int  oop_ms_adjust_pointers(oop obj) = 0;
   575   virtual int  oop_ms_adjust_pointers(oop obj) = 0;
   577 #if INCLUDE_ALL_GCS
   576 #if INCLUDE_ALL_GCS
   578   // Parallel Scavenge
   577   // Parallel Scavenge
   579   virtual void oop_ps_push_contents(  oop obj, PSPromotionManager* pm)   = 0;
   578   virtual void oop_ps_push_contents(  oop obj, PSPromotionManager* pm)   = 0;
   580   // Parallel Compact
   579   // Parallel Compact
   582   virtual void oop_pc_update_pointers(oop obj) = 0;
   581   virtual void oop_pc_update_pointers(oop obj) = 0;
   583 #endif
   582 #endif
   584 
   583 
   585   // Iterators specialized to particular subtypes
   584   // Iterators specialized to particular subtypes
   586   // of ExtendedOopClosure, to avoid closure virtual calls.
   585   // of ExtendedOopClosure, to avoid closure virtual calls.
   587 #define Klass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                                          \
   586 #define Klass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                                           \
   588   virtual int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) = 0;                        \
   587   virtual void oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) = 0;                        \
   589   /* Iterates "closure" over all the oops in "obj" (of type "this") within "mr". */                    \
   588   /* Iterates "closure" over all the oops in "obj" (of type "this") within "mr". */                     \
   590   virtual int oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr) = 0;
   589   virtual void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr) = 0;
   591 
   590 
   592   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL)
   591   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL)
   593   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL)
   592   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL)
   594 
   593 
   595 #if INCLUDE_ALL_GCS
   594 #if INCLUDE_ALL_GCS
   596 #define Klass_OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)                    \
   595 #define Klass_OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)                     \
   597   virtual int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) = 0;
   596   virtual void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) = 0;
   598 
   597 
   599   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   598   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   600   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   599   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   601 #endif // INCLUDE_ALL_GCS
   600 #endif // INCLUDE_ALL_GCS
   602 
   601 
   659 
   658 
   660 // Oop iteration macros for declarations.
   659 // Oop iteration macros for declarations.
   661 // Used to generate declarations in the *Klass header files.
   660 // Used to generate declarations in the *Klass header files.
   662 
   661 
   663 #define OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                                    \
   662 #define OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                                    \
   664   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure);                        \
   663   void oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure);                        \
   665   int oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr);
   664   void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr);
   666 
   665 
   667 #if INCLUDE_ALL_GCS
   666 #if INCLUDE_ALL_GCS
   668 #define OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)              \
   667 #define OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)               \
   669   int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
   668   void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
   670 #endif // INCLUDE_ALL_GCS
   669 #endif // INCLUDE_ALL_GCS
   671 
   670 
   672 
   671 
   673 // Oop iteration macros for definitions.
   672 // Oop iteration macros for definitions.
   674 // Used to generate definitions in the *Klass.inline.hpp files.
   673 // Used to generate definitions in the *Klass.inline.hpp files.
   675 
   674 
   676 #define OOP_OOP_ITERATE_DEFN(KlassType, OopClosureType, nv_suffix)             \
   675 #define OOP_OOP_ITERATE_DEFN(KlassType, OopClosureType, nv_suffix)              \
   677 int KlassType::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {  \
   676 void KlassType::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {  \
   678   return oop_oop_iterate<nvs_to_bool(nv_suffix)>(obj, closure);                \
   677   oop_oop_iterate<nvs_to_bool(nv_suffix)>(obj, closure);                        \
   679 }
   678 }
   680 
   679 
   681 #if INCLUDE_ALL_GCS
   680 #if INCLUDE_ALL_GCS
   682 #define OOP_OOP_ITERATE_DEFN_BACKWARDS(KlassType, OopClosureType, nv_suffix)             \
   681 #define OOP_OOP_ITERATE_DEFN_BACKWARDS(KlassType, OopClosureType, nv_suffix)              \
   683 int KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {  \
   682 void KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {  \
   684   return oop_oop_iterate_reverse<nvs_to_bool(nv_suffix)>(obj, closure);                  \
   683   oop_oop_iterate_reverse<nvs_to_bool(nv_suffix)>(obj, closure);                          \
   685 }
   684 }
   686 #else
   685 #else
   687 #define OOP_OOP_ITERATE_DEFN_BACKWARDS(KlassType, OopClosureType, nv_suffix)
   686 #define OOP_OOP_ITERATE_DEFN_BACKWARDS(KlassType, OopClosureType, nv_suffix)
   688 #endif
   687 #endif
   689 
   688 
   690 #define OOP_OOP_ITERATE_DEFN_BOUNDED(KlassType, OopClosureType, nv_suffix)                           \
   689 #define OOP_OOP_ITERATE_DEFN_BOUNDED(KlassType, OopClosureType, nv_suffix)                            \
   691 int KlassType::oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr) {  \
   690 void KlassType::oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr) {  \
   692   return oop_oop_iterate_bounded<nvs_to_bool(nv_suffix)>(obj, closure, mr);                          \
   691   oop_oop_iterate_bounded<nvs_to_bool(nv_suffix)>(obj, closure, mr);                                  \
   693 }
   692 }
   694 
   693 
   695 #endif // SHARE_VM_OOPS_KLASS_HPP
   694 #endif // SHARE_VM_OOPS_KLASS_HPP