equal
deleted
inserted
replaced
489 &args2, |
489 &args2, |
490 CHECK); |
490 CHECK); |
491 } |
491 } |
492 } |
492 } |
493 |
493 |
494 Mutex* DCmdFactory::_dcmdFactory_lock = new Mutex(Mutex::leaf, "DCmdFactory", true, Monitor::_safepoint_check_never); |
|
495 bool DCmdFactory::_send_jmx_notification = false; |
494 bool DCmdFactory::_send_jmx_notification = false; |
496 |
495 |
497 DCmdFactory* DCmdFactory::factory(DCmdSource source, const char* name, size_t len) { |
496 DCmdFactory* DCmdFactory::factory(DCmdSource source, const char* name, size_t len) { |
498 MutexLockerEx ml(_dcmdFactory_lock, Mutex::_no_safepoint_check_flag); |
497 MutexLockerEx ml(DCmdFactory_lock, Mutex::_no_safepoint_check_flag); |
499 DCmdFactory* factory = _DCmdFactoryList; |
498 DCmdFactory* factory = _DCmdFactoryList; |
500 while (factory != NULL) { |
499 while (factory != NULL) { |
501 if (strlen(factory->name()) == len && |
500 if (strlen(factory->name()) == len && |
502 strncmp(name, factory->name(), len) == 0) { |
501 strncmp(name, factory->name(), len) == 0) { |
503 if(factory->export_flags() & source) { |
502 if(factory->export_flags() & source) { |
510 } |
509 } |
511 return NULL; |
510 return NULL; |
512 } |
511 } |
513 |
512 |
514 int DCmdFactory::register_DCmdFactory(DCmdFactory* factory) { |
513 int DCmdFactory::register_DCmdFactory(DCmdFactory* factory) { |
515 MutexLockerEx ml(_dcmdFactory_lock, Mutex::_no_safepoint_check_flag); |
514 MutexLockerEx ml(DCmdFactory_lock, Mutex::_no_safepoint_check_flag); |
516 factory->_next = _DCmdFactoryList; |
515 factory->_next = _DCmdFactoryList; |
517 _DCmdFactoryList = factory; |
516 _DCmdFactoryList = factory; |
518 if (_send_jmx_notification && !factory->_hidden |
517 if (_send_jmx_notification && !factory->_hidden |
519 && (factory->_export_flags & DCmd_Source_MBean)) { |
518 && (factory->_export_flags & DCmd_Source_MBean)) { |
520 DCmdFactory::push_jmx_notification_request(); |
519 DCmdFactory::push_jmx_notification_request(); |
535 THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(), |
534 THROW_MSG_NULL(vmSymbols::java_lang_IllegalArgumentException(), |
536 "Unknown diagnostic command"); |
535 "Unknown diagnostic command"); |
537 } |
536 } |
538 |
537 |
539 GrowableArray<const char*>* DCmdFactory::DCmd_list(DCmdSource source) { |
538 GrowableArray<const char*>* DCmdFactory::DCmd_list(DCmdSource source) { |
540 MutexLockerEx ml(_dcmdFactory_lock, Mutex::_no_safepoint_check_flag); |
539 MutexLockerEx ml(DCmdFactory_lock, Mutex::_no_safepoint_check_flag); |
541 GrowableArray<const char*>* array = new GrowableArray<const char*>(); |
540 GrowableArray<const char*>* array = new GrowableArray<const char*>(); |
542 DCmdFactory* factory = _DCmdFactoryList; |
541 DCmdFactory* factory = _DCmdFactoryList; |
543 while (factory != NULL) { |
542 while (factory != NULL) { |
544 if (!factory->is_hidden() && (factory->export_flags() & source)) { |
543 if (!factory->is_hidden() && (factory->export_flags() & source)) { |
545 array->append(factory->name()); |
544 array->append(factory->name()); |
548 } |
547 } |
549 return array; |
548 return array; |
550 } |
549 } |
551 |
550 |
552 GrowableArray<DCmdInfo*>* DCmdFactory::DCmdInfo_list(DCmdSource source ) { |
551 GrowableArray<DCmdInfo*>* DCmdFactory::DCmdInfo_list(DCmdSource source ) { |
553 MutexLockerEx ml(_dcmdFactory_lock, Mutex::_no_safepoint_check_flag); |
552 MutexLockerEx ml(DCmdFactory_lock, Mutex::_no_safepoint_check_flag); |
554 GrowableArray<DCmdInfo*>* array = new GrowableArray<DCmdInfo*>(); |
553 GrowableArray<DCmdInfo*>* array = new GrowableArray<DCmdInfo*>(); |
555 DCmdFactory* factory = _DCmdFactoryList; |
554 DCmdFactory* factory = _DCmdFactoryList; |
556 while (factory != NULL) { |
555 while (factory != NULL) { |
557 if (!factory->is_hidden() && (factory->export_flags() & source)) { |
556 if (!factory->is_hidden() && (factory->export_flags() & source)) { |
558 array->append(new DCmdInfo(factory->name(), |
557 array->append(new DCmdInfo(factory->name(), |