equal
deleted
inserted
replaced
195 bool value = MemoryService::get_verbose() || ClassLoadingService::get_verbose(); |
195 bool value = MemoryService::get_verbose() || ClassLoadingService::get_verbose(); |
196 LogLevelType level = value ? LogLevel::Info : LogLevel::Off; |
196 LogLevelType level = value ? LogLevel::Info : LogLevel::Off; |
197 LogConfiguration::configure_stdout(level, false, LOG_TAGS(class, unload)); |
197 LogConfiguration::configure_stdout(level, false, LOG_TAGS(class, unload)); |
198 } |
198 } |
199 |
199 |
200 GrowableArray<Klass*>* LoadedClassesEnumerator::_loaded_classes = NULL; |
|
201 |
|
202 LoadedClassesEnumerator::LoadedClassesEnumerator() { |
|
203 |
|
204 int init_size = ClassLoadingService::loaded_class_count(); |
|
205 _klass_array = new GrowableArray<Klass*>(init_size); |
|
206 |
|
207 // For consistency of the loaded classes, grab the SystemDictionary lock |
|
208 MutexLocker sd_mutex(SystemDictionary_lock); |
|
209 |
|
210 // Set _loaded_classes and begin enumerating all classes. |
|
211 // Only one thread will do the enumeration at a time. |
|
212 // These static variables are needed and they are used by the static method |
|
213 // add_loaded_class called from classes_do(). |
|
214 _loaded_classes = _klass_array; |
|
215 |
|
216 SystemDictionary::classes_do(&add_loaded_class); |
|
217 |
|
218 // FIXME: Exclude array klasses for now |
|
219 // Universe::basic_type_classes_do(&add_loaded_class); |
|
220 } |
|
221 |
|
222 #endif // INCLUDE_MANAGEMENT |
200 #endif // INCLUDE_MANAGEMENT |