< prev index next >

src/share/vm/services/diagnosticFramework.cpp

Print this page




 440 void DCmdFactory::send_notification(TRAPS) {
 441   DCmdFactory::send_notification_internal(THREAD);
 442   // Clearing pending exception to avoid premature termination of
 443   // the service thread
 444   if (HAS_PENDING_EXCEPTION) {
 445     CLEAR_PENDING_EXCEPTION;
 446   }
 447 }
 448 void DCmdFactory::send_notification_internal(TRAPS) {
 449   ResourceMark rm(THREAD);
 450   HandleMark hm(THREAD);
 451   bool notif = false;
 452   {
 453     MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
 454     notif = _has_pending_jmx_notification;
 455     _has_pending_jmx_notification = false;
 456   }
 457   if (notif) {
 458 
 459     Klass* k = Management::com_sun_management_internal_DiagnosticCommandImpl_klass(CHECK);
 460     instanceKlassHandle dcmd_mbean_klass(THREAD, k);
 461 
 462     JavaValue result(T_OBJECT);
 463     JavaCalls::call_static(&result,
 464             dcmd_mbean_klass,
 465             vmSymbols::getDiagnosticCommandMBean_name(),
 466             vmSymbols::getDiagnosticCommandMBean_signature(),
 467             CHECK);
 468 
 469     instanceOop m = (instanceOop) result.get_jobject();
 470     instanceHandle dcmd_mbean_h(THREAD, m);
 471 
 472     if (!dcmd_mbean_h->is_a(k)) {
 473       THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 474               "DiagnosticCommandImpl.getDiagnosticCommandMBean didn't return a DiagnosticCommandMBean instance");
 475     }
 476 
 477     JavaValue result2(T_VOID);
 478     JavaCallArguments args2(dcmd_mbean_h);
 479 
 480     JavaCalls::call_virtual(&result2,




 440 void DCmdFactory::send_notification(TRAPS) {
 441   DCmdFactory::send_notification_internal(THREAD);
 442   // Clearing pending exception to avoid premature termination of
 443   // the service thread
 444   if (HAS_PENDING_EXCEPTION) {
 445     CLEAR_PENDING_EXCEPTION;
 446   }
 447 }
 448 void DCmdFactory::send_notification_internal(TRAPS) {
 449   ResourceMark rm(THREAD);
 450   HandleMark hm(THREAD);
 451   bool notif = false;
 452   {
 453     MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag);
 454     notif = _has_pending_jmx_notification;
 455     _has_pending_jmx_notification = false;
 456   }
 457   if (notif) {
 458 
 459     Klass* k = Management::com_sun_management_internal_DiagnosticCommandImpl_klass(CHECK);
 460     InstanceKlass* dcmd_mbean_klass = InstanceKlass::cast(k);
 461 
 462     JavaValue result(T_OBJECT);
 463     JavaCalls::call_static(&result,
 464             dcmd_mbean_klass,
 465             vmSymbols::getDiagnosticCommandMBean_name(),
 466             vmSymbols::getDiagnosticCommandMBean_signature(),
 467             CHECK);
 468 
 469     instanceOop m = (instanceOop) result.get_jobject();
 470     instanceHandle dcmd_mbean_h(THREAD, m);
 471 
 472     if (!dcmd_mbean_h->is_a(k)) {
 473       THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
 474               "DiagnosticCommandImpl.getDiagnosticCommandMBean didn't return a DiagnosticCommandMBean instance");
 475     }
 476 
 477     JavaValue result2(T_VOID);
 478     JavaCallArguments args2(dcmd_mbean_h);
 479 
 480     JavaCalls::call_virtual(&result2,


< prev index next >