hotspot/src/share/vm/oops/instanceClassLoaderKlass.hpp
changeset 30150 d9c940aa42ef
parent 29688 2a0cad173059
child 30764 fec48bf5a827
equal deleted inserted replaced
30149:c0f930abe5ed 30150:d9c940aa42ef
    46 public:
    46 public:
    47   virtual bool oop_is_instanceClassLoader() const { return true; }
    47   virtual bool oop_is_instanceClassLoader() const { return true; }
    48 
    48 
    49   InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
    49   InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
    50 
    50 
    51   // Iterators
    51   // GC specific object visitors
    52   int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
    52   //
    53     return oop_oop_iterate_v(obj, blk);
    53   // Mark Sweep
    54   }
    54   void oop_ms_follow_contents(oop obj);
    55   int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
    55   int  oop_ms_adjust_pointers(oop obj);
    56     return oop_oop_iterate_v_m(obj, blk, mr);
    56 #if INCLUDE_ALL_GCS
    57   }
    57   // Parallel Scavenge
       
    58   void oop_ps_push_contents(  oop obj, PSPromotionManager* pm);
       
    59   // Parallel Compact
       
    60   void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
       
    61   void oop_pc_update_pointers(oop obj);
       
    62 #endif
    58 
    63 
    59 #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                \
    64   // Oop fields (and metadata) iterators
    60   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);                         \
    65   //  [nv = true]  Use non-virtual calls to do_oop_nv.
       
    66   //  [nv = false] Use virtual calls to do_oop.
       
    67   //
       
    68   // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses.)
       
    69 
       
    70  private:
       
    71   // Forward iteration
       
    72   // Iterate over the oop fields and metadata.
       
    73   template <bool nv, class OopClosureType>
       
    74   inline int oop_oop_iterate(oop obj, OopClosureType* closure);
       
    75 
       
    76 #if INCLUDE_ALL_GCS
       
    77   // Reverse iteration
       
    78   // Iterate over the oop fields and metadata.
       
    79   template <bool nv, class OopClosureType>
       
    80   inline int oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
       
    81 #endif
       
    82 
       
    83   // Bounded range iteration
       
    84   // Iterate over the oop fields and metadata.
       
    85   template <bool nv, class OopClosureType>
       
    86   inline int oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
       
    87 
       
    88  public:
       
    89 
       
    90 #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)   \
       
    91   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);                    \
    61   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
    92   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
    62 
    93 
    63   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL)
    94   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL)
    64   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL)
    95   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL)
    65 
    96 
    66 #if INCLUDE_ALL_GCS
    97 #if INCLUDE_ALL_GCS
    67 #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix)      \
    98 #define InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix)  \
    68   int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
    99   int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
    69 
   100 
    70   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
   101   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
    71   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
   102   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
    72 #endif // INCLUDE_ALL_GCS
   103 #endif // INCLUDE_ALL_GCS
    73 
   104 
    74     // Garbage collection
       
    75   void oop_follow_contents(oop obj);
       
    76 
       
    77   // Parallel Scavenge and Parallel Old
       
    78   PARALLEL_GC_DECLS
       
    79 };
   105 };
    80 
   106 
    81 #endif // SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
   107 #endif // SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP