30 class ClassFileParser;
31
32 // An InstanceClassLoaderKlass is a specialization of the InstanceKlass. It does
33 // not add any field. It is added to walk the dependencies for the class loader
34 // key that this class loader points to. This is how the loader_data graph is
35 // walked and dependant class loaders are kept alive. I thought we walked
36 // the list later?
37
38 class InstanceClassLoaderKlass: public InstanceKlass {
39 friend class VMStructs;
40 friend class InstanceKlass;
41 public:
42 static const KlassID ID = InstanceClassLoaderKlassID;
43
44 private:
45 InstanceClassLoaderKlass(const ClassFileParser& parser) : InstanceKlass(parser, InstanceKlass::_misc_kind_class_loader, I
46
47 public:
48 InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
49
50 // GC specific object visitors
51 //
52 #if INCLUDE_PARALLELGC
53 // Parallel Compact
54 void oop_pc_update_pointers(oop obj, ParCompactionManager* cm);
55 #endif
56
57 // Oop fields (and metadata) iterators
58 //
59 // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses.)
60
61 public:
62 // Forward iteration
63 // Iterate over the oop fields and metadata.
64 template <typename T, class OopClosureType>
65 inline void oop_oop_iterate(oop obj, OopClosureType* closure);
66
67 // Reverse iteration
68 // Iterate over the oop fields and metadata.
69 template <typename T, class OopClosureType>
70 inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
71
72 // Bounded range iteration
73 // Iterate over the oop fields and metadata.
74 template <typename T, class OopClosureType>
75 inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
|
30 class ClassFileParser;
31
32 // An InstanceClassLoaderKlass is a specialization of the InstanceKlass. It does
33 // not add any field. It is added to walk the dependencies for the class loader
34 // key that this class loader points to. This is how the loader_data graph is
35 // walked and dependant class loaders are kept alive. I thought we walked
36 // the list later?
37
38 class InstanceClassLoaderKlass: public InstanceKlass {
39 friend class VMStructs;
40 friend class InstanceKlass;
41 public:
42 static const KlassID ID = InstanceClassLoaderKlassID;
43
44 private:
45 InstanceClassLoaderKlass(const ClassFileParser& parser) : InstanceKlass(parser, InstanceKlass::_misc_kind_class_loader, I
46
47 public:
48 InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
49
50 // Oop fields (and metadata) iterators
51 //
52 // The InstanceClassLoaderKlass iterators also visit the CLD pointer (or mirror of anonymous klasses.)
53
54 public:
55 // Forward iteration
56 // Iterate over the oop fields and metadata.
57 template <typename T, class OopClosureType>
58 inline void oop_oop_iterate(oop obj, OopClosureType* closure);
59
60 // Reverse iteration
61 // Iterate over the oop fields and metadata.
62 template <typename T, class OopClosureType>
63 inline void oop_oop_iterate_reverse(oop obj, OopClosureType* closure);
64
65 // Bounded range iteration
66 // Iterate over the oop fields and metadata.
67 template <typename T, class OopClosureType>
68 inline void oop_oop_iterate_bounded(oop obj, OopClosureType* closure, MemRegion mr);
|