159 public:
160 LockedClassesDo(); // For callers who provide their own do_klass
161 LockedClassesDo(classes_do_func_t function);
162 ~LockedClassesDo();
163
164 void do_klass(Klass* k) {
165 (*_function)(k);
166 }
167 };
168
169 // An iterator that distributes Klasses to parallel worker threads.
170 class ClassLoaderDataGraphKlassIteratorAtomic : public StackObj {
171 Klass* volatile _next_klass;
172 public:
173 ClassLoaderDataGraphKlassIteratorAtomic();
174 Klass* next_klass();
175 private:
176 static Klass* next_klass_in_cldg(Klass* klass);
177 };
178
179 class ClassLoaderDataGraphMetaspaceIterator : public StackObj {
180 ClassLoaderData* _data;
181 public:
182 ClassLoaderDataGraphMetaspaceIterator();
183 ~ClassLoaderDataGraphMetaspaceIterator();
184 bool repeat() { return _data != NULL; }
185 ClassLoaderMetaspace* get_next();
186 };
187 #endif // SHARE_CLASSFILE_CLASSLOADERDATAGRAPH_HPP
|
159 public:
160 LockedClassesDo(); // For callers who provide their own do_klass
161 LockedClassesDo(classes_do_func_t function);
162 ~LockedClassesDo();
163
164 void do_klass(Klass* k) {
165 (*_function)(k);
166 }
167 };
168
169 // An iterator that distributes Klasses to parallel worker threads.
170 class ClassLoaderDataGraphKlassIteratorAtomic : public StackObj {
171 Klass* volatile _next_klass;
172 public:
173 ClassLoaderDataGraphKlassIteratorAtomic();
174 Klass* next_klass();
175 private:
176 static Klass* next_klass_in_cldg(Klass* klass);
177 };
178
179 #endif // SHARE_CLASSFILE_CLASSLOADERDATAGRAPH_HPP
|