112 // CMS support.
113 static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); }
114 static GrowableArray<ClassLoaderData*>* new_clds();
115
116 static void set_should_purge(bool b) { _should_purge = b; }
117 static void purge_if_needed() {
118 // Only purge the CLDG for CMS if concurrent sweep is complete.
119 if (_should_purge) {
120 purge();
121 // reset for next time.
122 set_should_purge(false);
123 }
124 }
125
126 static bool has_metaspace_oom() { return _metaspace_oom; }
127 static void set_metaspace_oom(bool value) { _metaspace_oom = value; }
128
129 static void dump_on(outputStream * const out) PRODUCT_RETURN;
130 static void dump() { dump_on(tty); }
131 static void verify();
132 static void log_creation(Handle loader, ClassLoaderData* cld, TRAPS);
133
134 static bool unload_list_contains(const void* x);
135 #ifndef PRODUCT
136 static bool contains_loader_data(ClassLoaderData* loader_data);
137 #endif
138
139 #if INCLUDE_TRACE
140 private:
141 static Ticks _class_unload_time;
142 static void class_unload_event(Klass* const k);
143 #endif
144 };
145
146 // ClassLoaderData class
147
148 class ClassLoaderData : public CHeapObj<mtClass> {
149 friend class VMStructs;
150 private:
151 class Dependencies VALUE_OBJ_CLASS_SPEC {
152 objArrayOop _list_head;
|
112 // CMS support.
113 static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); }
114 static GrowableArray<ClassLoaderData*>* new_clds();
115
116 static void set_should_purge(bool b) { _should_purge = b; }
117 static void purge_if_needed() {
118 // Only purge the CLDG for CMS if concurrent sweep is complete.
119 if (_should_purge) {
120 purge();
121 // reset for next time.
122 set_should_purge(false);
123 }
124 }
125
126 static bool has_metaspace_oom() { return _metaspace_oom; }
127 static void set_metaspace_oom(bool value) { _metaspace_oom = value; }
128
129 static void dump_on(outputStream * const out) PRODUCT_RETURN;
130 static void dump() { dump_on(tty); }
131 static void verify();
132 static void print_creation(outputStream* out, Handle loader, ClassLoaderData* cld, TRAPS);
133
134 static bool unload_list_contains(const void* x);
135 #ifndef PRODUCT
136 static bool contains_loader_data(ClassLoaderData* loader_data);
137 #endif
138
139 #if INCLUDE_TRACE
140 private:
141 static Ticks _class_unload_time;
142 static void class_unload_event(Klass* const k);
143 #endif
144 };
145
146 // ClassLoaderData class
147
148 class ClassLoaderData : public CHeapObj<mtClass> {
149 friend class VMStructs;
150 private:
151 class Dependencies VALUE_OBJ_CLASS_SPEC {
152 objArrayOop _list_head;
|