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