src/share/vm/services/diagnosticFramework.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8047290 Sdiff src/share/vm/services

src/share/vm/services/diagnosticFramework.cpp

Print this page




 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) {


src/share/vm/services/diagnosticFramework.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File