< prev index next >

src/share/vm/services/management.cpp

Print this page

        

*** 60,79 **** PerfVariable* Management::_begin_vm_creation_time = NULL; PerfVariable* Management::_end_vm_creation_time = NULL; PerfVariable* Management::_vm_init_done_time = NULL; ! Klass* Management::_diagnosticCommandImpl_klass = NULL; ! Klass* Management::_garbageCollectorExtImpl_klass = NULL; ! Klass* Management::_garbageCollectorMXBean_klass = NULL; ! Klass* Management::_gcInfo_klass = NULL; ! Klass* Management::_managementFactoryHelper_klass = NULL; ! Klass* Management::_memoryManagerMXBean_klass = NULL; ! Klass* Management::_memoryPoolMXBean_klass = NULL; ! Klass* Management::_memoryUsage_klass = NULL; ! Klass* Management::_sensor_klass = NULL; ! Klass* Management::_threadInfo_klass = NULL; jmmOptionalSupport Management::_optional_support = {0}; TimeStamp Management::_stamp; void management_init() { --- 60,79 ---- PerfVariable* Management::_begin_vm_creation_time = NULL; PerfVariable* Management::_end_vm_creation_time = NULL; PerfVariable* Management::_vm_init_done_time = NULL; ! InstanceKlass* Management::_diagnosticCommandImpl_klass = NULL; ! InstanceKlass* Management::_garbageCollectorExtImpl_klass = NULL; ! InstanceKlass* Management::_garbageCollectorMXBean_klass = NULL; ! InstanceKlass* Management::_gcInfo_klass = NULL; ! InstanceKlass* Management::_managementFactoryHelper_klass = NULL; ! InstanceKlass* Management::_memoryManagerMXBean_klass = NULL; ! InstanceKlass* Management::_memoryPoolMXBean_klass = NULL; ! InstanceKlass* Management::_memoryUsage_klass = NULL; ! InstanceKlass* Management::_sensor_klass = NULL; ! InstanceKlass* Management::_threadInfo_klass = NULL; jmmOptionalSupport Management::_optional_support = {0}; TimeStamp Management::_stamp; void management_init() {
*** 154,202 **** THREAD); if (k == NULL) { vm_exit_during_initialization("Management agent initialization failure: " "class jdk.internal.agent.Agent not found."); } - instanceKlassHandle ik (THREAD, k); JavaValue result(T_VOID); JavaCalls::call_static(&result, ! ik, vmSymbols::startAgent_name(), vmSymbols::void_method_signature(), CHECK); } } void Management::get_optional_support(jmmOptionalSupport* support) { memcpy(support, &_optional_support, sizeof(jmmOptionalSupport)); } ! Klass* Management::load_and_initialize_klass(Symbol* sh, TRAPS) { Klass* k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL); ! Klass* ik = initialize_klass(k, CHECK_NULL); ! return ik; } ! Klass* Management::load_and_initialize_klass_or_null(Symbol* sh, TRAPS) { Klass* k = SystemDictionary::resolve_or_null(sh, CHECK_NULL); if (k == NULL) { return NULL; } ! Klass* ik = initialize_klass(k, CHECK_NULL); ! return ik; } ! Klass* Management::initialize_klass(Klass* k, TRAPS) { ! instanceKlassHandle ik (THREAD, k); if (ik->should_be_initialized()) { ik->initialize(CHECK_NULL); } // If these classes change to not be owned by the boot loader, they need // to be walked to keep their class loader alive in oops_do. assert(ik->class_loader() == NULL, "need to follow in oops_do"); ! return ik(); } void Management::record_vm_startup_time(jlong begin, jlong duration) { // if the performance counter is not initialized, // then vm initialization failed; simply return. --- 154,199 ---- THREAD); if (k == NULL) { vm_exit_during_initialization("Management agent initialization failure: " "class jdk.internal.agent.Agent not found."); } JavaValue result(T_VOID); JavaCalls::call_static(&result, ! k, vmSymbols::startAgent_name(), vmSymbols::void_method_signature(), CHECK); } } void Management::get_optional_support(jmmOptionalSupport* support) { memcpy(support, &_optional_support, sizeof(jmmOptionalSupport)); } ! InstanceKlass* Management::load_and_initialize_klass(Symbol* sh, TRAPS) { Klass* k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL); ! return initialize_klass(k, CHECK_NULL); } ! InstanceKlass* Management::load_and_initialize_klass_or_null(Symbol* sh, TRAPS) { Klass* k = SystemDictionary::resolve_or_null(sh, CHECK_NULL); if (k == NULL) { return NULL; } ! return initialize_klass(k, CHECK_NULL); } ! InstanceKlass* Management::initialize_klass(Klass* k, TRAPS) { ! InstanceKlass* ik = InstanceKlass::cast(k); if (ik->should_be_initialized()) { ik->initialize(CHECK_NULL); } // If these classes change to not be owned by the boot loader, they need // to be walked to keep their class loader alive in oops_do. assert(ik->class_loader() == NULL, "need to follow in oops_do"); ! return ik; } void Management::record_vm_startup_time(jlong begin, jlong duration) { // if the performance counter is not initialized, // then vm initialization failed; simply return.
*** 216,290 **** void Management::oops_do(OopClosure* f) { MemoryService::oops_do(f); ThreadService::oops_do(f); } ! Klass* Management::java_lang_management_ThreadInfo_klass(TRAPS) { if (_threadInfo_klass == NULL) { _threadInfo_klass = load_and_initialize_klass(vmSymbols::java_lang_management_ThreadInfo(), CHECK_NULL); } return _threadInfo_klass; } ! Klass* Management::java_lang_management_MemoryUsage_klass(TRAPS) { if (_memoryUsage_klass == NULL) { _memoryUsage_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryUsage(), CHECK_NULL); } return _memoryUsage_klass; } ! Klass* Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) { if (_memoryPoolMXBean_klass == NULL) { _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryPoolMXBean(), CHECK_NULL); } return _memoryPoolMXBean_klass; } ! Klass* Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) { if (_memoryManagerMXBean_klass == NULL) { _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryManagerMXBean(), CHECK_NULL); } return _memoryManagerMXBean_klass; } ! Klass* Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) { if (_garbageCollectorMXBean_klass == NULL) { _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL); } return _garbageCollectorMXBean_klass; } ! Klass* Management::sun_management_Sensor_klass(TRAPS) { if (_sensor_klass == NULL) { _sensor_klass = load_and_initialize_klass(vmSymbols::sun_management_Sensor(), CHECK_NULL); } return _sensor_klass; } ! Klass* Management::sun_management_ManagementFactoryHelper_klass(TRAPS) { if (_managementFactoryHelper_klass == NULL) { _managementFactoryHelper_klass = load_and_initialize_klass(vmSymbols::sun_management_ManagementFactoryHelper(), CHECK_NULL); } return _managementFactoryHelper_klass; } ! Klass* Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(TRAPS) { if (_garbageCollectorExtImpl_klass == NULL) { _garbageCollectorExtImpl_klass = load_and_initialize_klass_or_null(vmSymbols::com_sun_management_internal_GarbageCollectorExtImpl(), CHECK_NULL); } return _garbageCollectorExtImpl_klass; } ! Klass* Management::com_sun_management_GcInfo_klass(TRAPS) { if (_gcInfo_klass == NULL) { _gcInfo_klass = load_and_initialize_klass(vmSymbols::com_sun_management_GcInfo(), CHECK_NULL); } return _gcInfo_klass; } ! Klass* Management::com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS) { if (_diagnosticCommandImpl_klass == NULL) { _diagnosticCommandImpl_klass = load_and_initialize_klass(vmSymbols::com_sun_management_internal_DiagnosticCommandImpl(), CHECK_NULL); } return _diagnosticCommandImpl_klass; } --- 213,287 ---- void Management::oops_do(OopClosure* f) { MemoryService::oops_do(f); ThreadService::oops_do(f); } ! InstanceKlass* Management::java_lang_management_ThreadInfo_klass(TRAPS) { if (_threadInfo_klass == NULL) { _threadInfo_klass = load_and_initialize_klass(vmSymbols::java_lang_management_ThreadInfo(), CHECK_NULL); } return _threadInfo_klass; } ! InstanceKlass* Management::java_lang_management_MemoryUsage_klass(TRAPS) { if (_memoryUsage_klass == NULL) { _memoryUsage_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryUsage(), CHECK_NULL); } return _memoryUsage_klass; } ! InstanceKlass* Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) { if (_memoryPoolMXBean_klass == NULL) { _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryPoolMXBean(), CHECK_NULL); } return _memoryPoolMXBean_klass; } ! InstanceKlass* Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) { if (_memoryManagerMXBean_klass == NULL) { _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryManagerMXBean(), CHECK_NULL); } return _memoryManagerMXBean_klass; } ! InstanceKlass* Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) { if (_garbageCollectorMXBean_klass == NULL) { _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL); } return _garbageCollectorMXBean_klass; } ! InstanceKlass* Management::sun_management_Sensor_klass(TRAPS) { if (_sensor_klass == NULL) { _sensor_klass = load_and_initialize_klass(vmSymbols::sun_management_Sensor(), CHECK_NULL); } return _sensor_klass; } ! InstanceKlass* Management::sun_management_ManagementFactoryHelper_klass(TRAPS) { if (_managementFactoryHelper_klass == NULL) { _managementFactoryHelper_klass = load_and_initialize_klass(vmSymbols::sun_management_ManagementFactoryHelper(), CHECK_NULL); } return _managementFactoryHelper_klass; } ! InstanceKlass* Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(TRAPS) { if (_garbageCollectorExtImpl_klass == NULL) { _garbageCollectorExtImpl_klass = load_and_initialize_klass_or_null(vmSymbols::com_sun_management_internal_GarbageCollectorExtImpl(), CHECK_NULL); } return _garbageCollectorExtImpl_klass; } ! InstanceKlass* Management::com_sun_management_GcInfo_klass(TRAPS) { if (_gcInfo_klass == NULL) { _gcInfo_klass = load_and_initialize_klass(vmSymbols::com_sun_management_GcInfo(), CHECK_NULL); } return _gcInfo_klass; } ! InstanceKlass* Management::com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS) { if (_diagnosticCommandImpl_klass == NULL) { _diagnosticCommandImpl_klass = load_and_initialize_klass(vmSymbols::com_sun_management_internal_DiagnosticCommandImpl(), CHECK_NULL); } return _diagnosticCommandImpl_klass; }
*** 331,342 **** args->push_oop(stacktrace_h); } // Helper function to construct a ThreadInfo object instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS) { ! Klass* k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL); ! instanceKlassHandle ik (THREAD, k); JavaValue result(T_VOID); JavaCallArguments args(14); // First allocate a ThreadObj object and --- 328,338 ---- args->push_oop(stacktrace_h); } // Helper function to construct a ThreadInfo object instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS) { ! InstanceKlass* ik = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL); JavaValue result(T_VOID); JavaCallArguments args(14); // First allocate a ThreadObj object and
*** 361,372 **** instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS) { ! Klass* k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL); ! instanceKlassHandle ik (THREAD, k); JavaValue result(T_VOID); JavaCallArguments args(17); // First allocate a ThreadObj object and --- 357,367 ---- instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS) { ! InstanceKlass* ik = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL); JavaValue result(T_VOID); JavaCallArguments args(17); // First allocate a ThreadObj object and
*** 399,409 **** THROW_(vmSymbols::java_lang_NullPointerException(), NULL); } oop mgr_obj = JNIHandles::resolve(mgr); instanceHandle h(THREAD, (instanceOop) mgr_obj); ! Klass* k = Management::java_lang_management_GarbageCollectorMXBean_klass(CHECK_NULL); if (!h->is_a(k)) { THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), "the object is not an instance of java.lang.management.GarbageCollectorMXBean class", NULL); } --- 394,404 ---- THROW_(vmSymbols::java_lang_NullPointerException(), NULL); } oop mgr_obj = JNIHandles::resolve(mgr); instanceHandle h(THREAD, (instanceOop) mgr_obj); ! InstanceKlass* k = Management::java_lang_management_GarbageCollectorMXBean_klass(CHECK_NULL); if (!h->is_a(k)) { THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(), "the object is not an instance of java.lang.management.GarbageCollectorMXBean class", NULL); }
*** 505,517 **** } num_memory_pools = mgr->num_memory_pools(); } // Allocate the resulting MemoryPoolMXBean[] object ! Klass* k = Management::java_lang_management_MemoryPoolMXBean_klass(CHECK_NULL); ! instanceKlassHandle ik (THREAD, k); ! objArrayOop r = oopFactory::new_objArray(ik(), num_memory_pools, CHECK_NULL); objArrayHandle poolArray(THREAD, r); if (mgr == NULL) { // Get all memory pools for (int i = 0; i < num_memory_pools; i++) { --- 500,511 ---- } num_memory_pools = mgr->num_memory_pools(); } // Allocate the resulting MemoryPoolMXBean[] object ! InstanceKlass* ik = Management::java_lang_management_MemoryPoolMXBean_klass(CHECK_NULL); ! objArrayOop r = oopFactory::new_objArray(ik, num_memory_pools, CHECK_NULL); objArrayHandle poolArray(THREAD, r); if (mgr == NULL) { // Get all memory pools for (int i = 0; i < num_memory_pools; i++) {
*** 550,562 **** } num_mgrs = pool->num_memory_managers(); } // Allocate the resulting MemoryManagerMXBean[] object ! Klass* k = Management::java_lang_management_MemoryManagerMXBean_klass(CHECK_NULL); ! instanceKlassHandle ik (THREAD, k); ! objArrayOop r = oopFactory::new_objArray(ik(), num_mgrs, CHECK_NULL); objArrayHandle mgrArray(THREAD, r); if (pool == NULL) { // Get all memory managers for (int i = 0; i < num_mgrs; i++) { --- 544,555 ---- } num_mgrs = pool->num_memory_managers(); } // Allocate the resulting MemoryManagerMXBean[] object ! InstanceKlass* ik = Management::java_lang_management_MemoryManagerMXBean_klass(CHECK_NULL); ! objArrayOop r = oopFactory::new_objArray(ik, num_mgrs, CHECK_NULL); objArrayHandle mgrArray(THREAD, r); if (pool == NULL) { // Get all memory managers for (int i = 0; i < num_mgrs; i++) {
*** 627,637 **** JVM_ENTRY(void, jmm_SetPoolSensor(JNIEnv* env, jobject obj, jmmThresholdType type, jobject sensorObj)) if (obj == NULL || sensorObj == NULL) { THROW(vmSymbols::java_lang_NullPointerException()); } ! Klass* sensor_klass = Management::sun_management_Sensor_klass(CHECK); oop s = JNIHandles::resolve(sensorObj); assert(s->is_instance(), "Sensor should be an instanceOop"); instanceHandle sensor_h(THREAD, (instanceOop) s); if (!sensor_h->is_a(sensor_klass)) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), --- 620,630 ---- JVM_ENTRY(void, jmm_SetPoolSensor(JNIEnv* env, jobject obj, jmmThresholdType type, jobject sensorObj)) if (obj == NULL || sensorObj == NULL) { THROW(vmSymbols::java_lang_NullPointerException()); } ! InstanceKlass* sensor_klass = Management::sun_management_Sensor_klass(CHECK); oop s = JNIHandles::resolve(sensorObj); assert(s->is_instance(), "Sensor should be an instanceOop"); instanceHandle sensor_h(THREAD, (instanceOop) s); if (!sensor_h->is_a(sensor_klass)) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
*** 1200,1212 **** } int num_snapshots = dump_result.num_snapshots(); // create the result ThreadInfo[] object ! Klass* k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL); ! instanceKlassHandle ik (THREAD, k); ! objArrayOop r = oopFactory::new_objArray(ik(), num_snapshots, CHECK_NULL); objArrayHandle result_h(THREAD, r); int index = 0; for (ThreadSnapshot* ts = dump_result.snapshots(); ts != NULL; ts = ts->next(), index++) { if (ts->threadObj() == NULL) { --- 1193,1204 ---- } int num_snapshots = dump_result.num_snapshots(); // create the result ThreadInfo[] object ! InstanceKlass* ik = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL); ! objArrayOop r = oopFactory::new_objArray(ik, num_snapshots, CHECK_NULL); objArrayHandle result_h(THREAD, r); int index = 0; for (ThreadSnapshot* ts = dump_result.snapshots(); ts != NULL; ts = ts->next(), index++) { if (ts->threadObj() == NULL) {
*** 1308,1319 **** int num_classes = lce.num_loaded_classes(); objArrayOop r = oopFactory::new_objArray(SystemDictionary::Class_klass(), num_classes, CHECK_0); objArrayHandle classes_ah(THREAD, r); for (int i = 0; i < num_classes; i++) { ! KlassHandle kh = lce.get_klass(i); ! oop mirror = kh()->java_mirror(); classes_ah->obj_at_put(i, mirror); } return (jobjectArray) JNIHandles::make_local(env, classes_ah()); JVM_END --- 1300,1311 ---- int num_classes = lce.num_loaded_classes(); objArrayOop r = oopFactory::new_objArray(SystemDictionary::Class_klass(), num_classes, CHECK_0); objArrayHandle classes_ah(THREAD, r); for (int i = 0; i < num_classes; i++) { ! Klass* k = lce.get_klass(i); ! oop mirror = k->java_mirror(); classes_ah->obj_at_put(i, mirror); } return (jobjectArray) JNIHandles::make_local(env, classes_ah()); JVM_END
< prev index next >