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

src/share/vm/services/diagnosticFramework.cpp

Print this page




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


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