hotspot/src/share/vm/services/classLoadingService.cpp
changeset 46335 da075aa9241f
parent 46329 53ccc37bda19
child 46766 1f26ac73b909
equal deleted inserted replaced
46333:cef2c78aaa56 46335:da075aa9241f
   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