src/hotspot/share/oops/klass.hpp
changeset 49982 9042ffe5b7fe
parent 49969 8624981f1ffa
child 50039 9fec54fe663d
equal deleted inserted replaced
49981:bd0a95bec96b 49982:9042ffe5b7fe
   643     clean_weak_klass_links(/*unloading_occurred*/ true , /* clean_alive_klasses */ false);
   643     clean_weak_klass_links(/*unloading_occurred*/ true , /* clean_alive_klasses */ false);
   644   }
   644   }
   645 
   645 
   646   // GC specific object visitors
   646   // GC specific object visitors
   647   //
   647   //
   648 #if INCLUDE_ALL_GCS
   648 #if INCLUDE_PARALLELGC
   649   // Parallel Scavenge
   649   // Parallel Scavenge
   650   virtual void oop_ps_push_contents(  oop obj, PSPromotionManager* pm)   = 0;
   650   virtual void oop_ps_push_contents(  oop obj, PSPromotionManager* pm)   = 0;
   651   // Parallel Compact
   651   // Parallel Compact
   652   virtual void oop_pc_follow_contents(oop obj, ParCompactionManager* cm) = 0;
   652   virtual void oop_pc_follow_contents(oop obj, ParCompactionManager* cm) = 0;
   653   virtual void oop_pc_update_pointers(oop obj, ParCompactionManager* cm) = 0;
   653   virtual void oop_pc_update_pointers(oop obj, ParCompactionManager* cm) = 0;
   661   virtual void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr) = 0;
   661   virtual void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr) = 0;
   662 
   662 
   663   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL)
   663   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL)
   664   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL)
   664   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL)
   665 
   665 
   666 #if INCLUDE_ALL_GCS
   666 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
   667 #define Klass_OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)                     \
   667 #define Klass_OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)                     \
   668   virtual void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) = 0;
   668   virtual void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) = 0;
   669 
   669 
   670   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   670   ALL_OOP_OOP_ITERATE_CLOSURES_1(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   671   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   671   ALL_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_DECL_BACKWARDS)
   672 #endif // INCLUDE_ALL_GCS
   672 #endif
   673 
   673 
   674   virtual void array_klasses_do(void f(Klass* k)) {}
   674   virtual void array_klasses_do(void f(Klass* k)) {}
   675 
   675 
   676   // Return self, except for abstract classes with exactly 1
   676   // Return self, except for abstract classes with exactly 1
   677   // implementor.  Then return the 1 concrete implementation.
   677   // implementor.  Then return the 1 concrete implementation.
   728 
   728 
   729 #define OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                                    \
   729 #define OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                                    \
   730   void oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure);                        \
   730   void oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure);                        \
   731   void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr);
   731   void oop_oop_iterate_bounded##nv_suffix(oop obj, OopClosureType* closure, MemRegion mr);
   732 
   732 
   733 #if INCLUDE_ALL_GCS
   733 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
   734 #define OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)               \
   734 #define OOP_OOP_ITERATE_DECL_BACKWARDS(OopClosureType, nv_suffix)               \
   735   void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
   735   void oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure);
   736 #endif // INCLUDE_ALL_GCS
   736 #endif
   737 
   737 
   738 
   738 
   739 // Oop iteration macros for definitions.
   739 // Oop iteration macros for definitions.
   740 // Used to generate definitions in the *Klass.inline.hpp files.
   740 // Used to generate definitions in the *Klass.inline.hpp files.
   741 
   741 
   742 #define OOP_OOP_ITERATE_DEFN(KlassType, OopClosureType, nv_suffix)              \
   742 #define OOP_OOP_ITERATE_DEFN(KlassType, OopClosureType, nv_suffix)              \
   743 void KlassType::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {  \
   743 void KlassType::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {  \
   744   oop_oop_iterate<nvs_to_bool(nv_suffix)>(obj, closure);                        \
   744   oop_oop_iterate<nvs_to_bool(nv_suffix)>(obj, closure);                        \
   745 }
   745 }
   746 
   746 
   747 #if INCLUDE_ALL_GCS
   747 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
   748 #define OOP_OOP_ITERATE_DEFN_BACKWARDS(KlassType, OopClosureType, nv_suffix)              \
   748 #define OOP_OOP_ITERATE_DEFN_BACKWARDS(KlassType, OopClosureType, nv_suffix)              \
   749 void KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {  \
   749 void KlassType::oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {  \
   750   oop_oop_iterate_reverse<nvs_to_bool(nv_suffix)>(obj, closure);                          \
   750   oop_oop_iterate_reverse<nvs_to_bool(nv_suffix)>(obj, closure);                          \
   751 }
   751 }
   752 #else
   752 #else