217 void classes_do(KlassClosure* klass_closure);
218
219 JNIMethodBlock* jmethod_ids() const { return _jmethod_ids; }
220 void set_jmethod_ids(JNIMethodBlock* new_block) { _jmethod_ids = new_block; }
221
222 void print_value() { print_value_on(tty); }
223 void print_value_on(outputStream* out) const;
224 void dump(outputStream * const out) PRODUCT_RETURN;
225 void verify();
226 const char* loader_name();
227
228 jobject add_handle(Handle h);
229 void add_class(Klass* k);
230 void remove_class(Klass* k);
231 void record_dependency(Klass* to, TRAPS);
232 void init_dependencies(TRAPS);
233
234 void add_to_deallocate_list(Metadata* m);
235
236 static ClassLoaderData* class_loader_data(oop loader);
237 static ClassLoaderData* anonymous_class_loader_data(oop loader, TRAPS);
238 static void print_loader(ClassLoaderData *loader_data, outputStream *out);
239
240 // CDS support
241 Metaspace* ro_metaspace();
242 Metaspace* rw_metaspace();
243 void initialize_shared_metaspaces();
244 };
245
246 class ClassLoaderDataGraphMetaspaceIterator : public StackObj {
247 ClassLoaderData* _data;
248 public:
249 ClassLoaderDataGraphMetaspaceIterator();
250 ~ClassLoaderDataGraphMetaspaceIterator();
251 bool repeat() { return _data != NULL; }
252 Metaspace* get_next() {
253 assert(_data != NULL, "Should not be NULL in call to the iterator");
254 Metaspace* result = _data->metaspace_or_null();
255 _data = _data->next();
256 // This result might be NULL for class loaders without metaspace
|
217 void classes_do(KlassClosure* klass_closure);
218
219 JNIMethodBlock* jmethod_ids() const { return _jmethod_ids; }
220 void set_jmethod_ids(JNIMethodBlock* new_block) { _jmethod_ids = new_block; }
221
222 void print_value() { print_value_on(tty); }
223 void print_value_on(outputStream* out) const;
224 void dump(outputStream * const out) PRODUCT_RETURN;
225 void verify();
226 const char* loader_name();
227
228 jobject add_handle(Handle h);
229 void add_class(Klass* k);
230 void remove_class(Klass* k);
231 void record_dependency(Klass* to, TRAPS);
232 void init_dependencies(TRAPS);
233
234 void add_to_deallocate_list(Metadata* m);
235
236 static ClassLoaderData* class_loader_data(oop loader);
237 static ClassLoaderData* class_loader_data_or_null(oop loader);
238 static ClassLoaderData* anonymous_class_loader_data(oop loader, TRAPS);
239 static void print_loader(ClassLoaderData *loader_data, outputStream *out);
240
241 // CDS support
242 Metaspace* ro_metaspace();
243 Metaspace* rw_metaspace();
244 void initialize_shared_metaspaces();
245 };
246
247 class ClassLoaderDataGraphMetaspaceIterator : public StackObj {
248 ClassLoaderData* _data;
249 public:
250 ClassLoaderDataGraphMetaspaceIterator();
251 ~ClassLoaderDataGraphMetaspaceIterator();
252 bool repeat() { return _data != NULL; }
253 Metaspace* get_next() {
254 assert(_data != NULL, "Should not be NULL in call to the iterator");
255 Metaspace* result = _data->metaspace_or_null();
256 _data = _data->next();
257 // This result might be NULL for class loaders without metaspace
|