144 public:
145 LockedClassesDo(); // For callers who provide their own do_klass
146 LockedClassesDo(classes_do_func_t function);
147 ~LockedClassesDo();
148
149 void do_klass(Klass* k) {
150 (*_function)(k);
151 }
152 };
153
154 // An iterator that distributes Klasses to parallel worker threads.
155 class ClassLoaderDataGraphKlassIteratorAtomic : public StackObj {
156 Klass* volatile _next_klass;
157 public:
158 ClassLoaderDataGraphKlassIteratorAtomic();
159 Klass* next_klass();
160 private:
161 static Klass* next_klass_in_cldg(Klass* klass);
162 };
163
164 class ClassLoaderDataGraphMetaspaceIterator : public StackObj {
165 ClassLoaderData* _data;
166 public:
167 ClassLoaderDataGraphMetaspaceIterator();
168 ~ClassLoaderDataGraphMetaspaceIterator();
169 bool repeat() { return _data != NULL; }
170 ClassLoaderMetaspace* get_next();
171 };
172 #endif // SHARE_CLASSFILE_CLASSLOADERDATAGRAPH_HPP
|
144 public:
145 LockedClassesDo(); // For callers who provide their own do_klass
146 LockedClassesDo(classes_do_func_t function);
147 ~LockedClassesDo();
148
149 void do_klass(Klass* k) {
150 (*_function)(k);
151 }
152 };
153
154 // An iterator that distributes Klasses to parallel worker threads.
155 class ClassLoaderDataGraphKlassIteratorAtomic : public StackObj {
156 Klass* volatile _next_klass;
157 public:
158 ClassLoaderDataGraphKlassIteratorAtomic();
159 Klass* next_klass();
160 private:
161 static Klass* next_klass_in_cldg(Klass* klass);
162 };
163
164 #endif // SHARE_CLASSFILE_CLASSLOADERDATAGRAPH_HPP
|