src/hotspot/share/oops/instanceClassLoaderKlass.hpp
changeset 50752 9d62da00bf15
parent 49982 9042ffe5b7fe
child 52117 a2edf32cd813
equal deleted inserted replaced
50751:d9132bdf6c30 50752:9d62da00bf15
    23  */
    23  */
    24 
    24 
    25 #ifndef SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
    25 #ifndef SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
    26 #define SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
    26 #define SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
    27 
    27 
    28 #include "gc/shared/specialized_oop_closures.hpp"
       
    29 #include "oops/instanceKlass.hpp"
    28 #include "oops/instanceKlass.hpp"
    30 #include "utilities/macros.hpp"
    29 #include "utilities/macros.hpp"
    31 
    30 
    32 class ClassFileParser;
    31 class ClassFileParser;
    33 
    32 
    38 // the list later?
    37 // the list later?
    39 
    38 
    40 class InstanceClassLoaderKlass: public InstanceKlass {
    39 class InstanceClassLoaderKlass: public InstanceKlass {
    41   friend class VMStructs;
    40   friend class VMStructs;
    42   friend class InstanceKlass;
    41   friend class InstanceKlass;
    43  private:
    42 public:
    44   InstanceClassLoaderKlass(const ClassFileParser& parser) : InstanceKlass(parser, InstanceKlass::_misc_kind_class_loader) {}
    43   static const KlassID ID = InstanceClassLoaderKlassID;
       
    44 
       
    45 private:
       
    46   InstanceClassLoaderKlass(const ClassFileParser& parser) : InstanceKlass(parser, InstanceKlass::_misc_kind_class_loader, ID) {}
    45 
    47 
    46 public:
    48 public:
    47   InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
    49   InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
    48 
    50 
    49   // GC specific object visitors
    51   // GC specific object visitors
    55   void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
    57   void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
    56   void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
    58   void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
    57 #endif
    59 #endif
    58 
    60 
    59   // Oop fields (and metadata) iterators
    61   // Oop fields (and metadata) iterators
    60   //  [nv = true]  Use non-virtual calls to do_oop_nv.
       
    61   //  [nv = false] Use virtual calls to do_oop.
       
    62   //
    62   //
    63   // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses.)
    63   // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses.)
    64 
    64 
    65  private:
    65  public:
    66   // Forward iteration
    66   // Forward iteration
    67   // Iterate over the oop fields and metadata.
    67   // Iterate over the oop fields and metadata.
    68   template <bool nv, class OopClosureType>
    68   template <typename T, class OopClosureType>
    69   inline void oop_oop_iterate(oop obj, OopClosureType* closure);
    69   inline void oop_oop_iterate(oop obj, OopClosureType* closure);
    70 
    70 
    71 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
       
    72   // Reverse iteration
    71   // Reverse iteration
    73   // Iterate over the oop fields and metadata.
    72   // Iterate over the oop fields and metadata.
    74   template <bool nv, class OopClosureType>
    73   template <typename T, class OopClosureType>
    75   inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
    74   inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
    76 #endif
       
    77 
    75 
    78   // Bounded range iteration
    76   // Bounded range iteration
    79   // Iterate over the oop fields and metadata.
    77   // Iterate over the oop fields and metadata.
    80   template <bool nv, class OopClosureType>
    78   template <typename T, class OopClosureType>
    81   inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
    79   inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
    82 
       
    83  public:
       
    84 
       
    85   ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL)
       
    86   ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL)
       
    87 
       
    88 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS
       
    89   ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_OOP_ITERATE_DECL_BACKWARDS)
       
    90   ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_OOP_ITERATE_DECL_BACKWARDS)
       
    91 #endif
       
    92 
       
    93 };
    80 };
    94 
    81 
    95 #endif // SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
    82 #endif // SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP