470 Klass* k2 = Management::sun_management_DiagnosticCommandImpl_klass(CHECK);
471 instanceKlassHandle dcmd_mbean_klass(THREAD, k2);
472
473 if (!dcmd_mbean_h->is_a(k2)) {
474 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
475 "ManagementFactory.getDiagnosticCommandMBean didn't return a DiagnosticCommandMBean instance");
476 }
477
478 JavaValue result2(T_VOID);
479 JavaCallArguments args2(dcmd_mbean_h);
480
481 JavaCalls::call_virtual(&result2,
482 dcmd_mbean_klass,
483 vmSymbols::createDiagnosticFrameworkNotification_name(),
484 vmSymbols::void_method_signature(),
485 &args2,
486 CHECK);
487 }
488 }
489
490 Mutex* DCmdFactory::_dcmdFactory_lock = new Mutex(Mutex::leaf, "DCmdFactory", true);
491 bool DCmdFactory::_send_jmx_notification = false;
492
493 DCmdFactory* DCmdFactory::factory(DCmdSource source, const char* name, size_t len) {
494 MutexLockerEx ml(_dcmdFactory_lock, Mutex::_no_safepoint_check_flag);
495 DCmdFactory* factory = _DCmdFactoryList;
496 while (factory != NULL) {
497 if (strlen(factory->name()) == len &&
498 strncmp(name, factory->name(), len) == 0) {
499 if(factory->export_flags() & source) {
500 return factory;
501 } else {
502 return NULL;
503 }
504 }
505 factory = factory->_next;
506 }
507 return NULL;
508 }
509
510 int DCmdFactory::register_DCmdFactory(DCmdFactory* factory) {
|
470 Klass* k2 = Management::sun_management_DiagnosticCommandImpl_klass(CHECK);
471 instanceKlassHandle dcmd_mbean_klass(THREAD, k2);
472
473 if (!dcmd_mbean_h->is_a(k2)) {
474 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
475 "ManagementFactory.getDiagnosticCommandMBean didn't return a DiagnosticCommandMBean instance");
476 }
477
478 JavaValue result2(T_VOID);
479 JavaCallArguments args2(dcmd_mbean_h);
480
481 JavaCalls::call_virtual(&result2,
482 dcmd_mbean_klass,
483 vmSymbols::createDiagnosticFrameworkNotification_name(),
484 vmSymbols::void_method_signature(),
485 &args2,
486 CHECK);
487 }
488 }
489
490 Mutex* DCmdFactory::_dcmdFactory_lock = new Mutex(Mutex::leaf, "DCmdFactory", true, Monitor::_safepoint_check_never);
491 bool DCmdFactory::_send_jmx_notification = false;
492
493 DCmdFactory* DCmdFactory::factory(DCmdSource source, const char* name, size_t len) {
494 MutexLockerEx ml(_dcmdFactory_lock, Mutex::_no_safepoint_check_flag);
495 DCmdFactory* factory = _DCmdFactoryList;
496 while (factory != NULL) {
497 if (strlen(factory->name()) == len &&
498 strncmp(name, factory->name(), len) == 0) {
499 if(factory->export_flags() & source) {
500 return factory;
501 } else {
502 return NULL;
503 }
504 }
505 factory = factory->_next;
506 }
507 return NULL;
508 }
509
510 int DCmdFactory::register_DCmdFactory(DCmdFactory* factory) {
|