< prev index next >

src/hotspot/share/services/management.cpp

Print this page

        

*** 1317,1327 **** --- 1317,1336 ---- ThreadService::reset_contention_time_stat(java_thread); } } } else { // reset contention statistics for a given thread + JavaThread* java_thread = NULL; + if (THREAD->is_Java_thread()) { + JavaThread* current_thread = (JavaThread*)THREAD; + if (tid == java_lang_Thread::thread_id(current_thread->threadObj())) { + java_thread = current_thread; + } + } + if (java_thread == NULL) { JavaThread* java_thread = jtiwh.list()->find_JavaThread_from_java_tid(tid); + } if (java_thread == NULL) { return false; } if (type == JMM_STAT_THREAD_CONTENTION_COUNT) {
*** 1385,1394 **** --- 1394,1409 ---- JavaThread* java_thread = NULL; if (thread_id == 0) { // current thread return os::current_thread_cpu_time(); } else { + if (THREAD->is_Java_thread()) { + JavaThread* current_thread = (JavaThread*)THREAD; + if (thread_id == java_lang_Thread::thread_id(current_thread->threadObj())) { + return os::thread_cpu_time((Thread*) current_thread); + } + } ThreadsListHandle tlh; java_thread = tlh.list()->find_JavaThread_from_java_tid(thread_id); if (java_thread != NULL) { return os::thread_cpu_time((Thread*) java_thread); }
*** 2095,2105 **** if (num_threads != sizeArray_h->length()) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "The length of the given long array does not match the length of " "the given array of thread IDs"); } ! ThreadsListHandle tlh; for (int i = 0; i < num_threads; i++) { JavaThread* java_thread = tlh.list()->find_JavaThread_from_java_tid(ids_ah->long_at(i)); if (java_thread != NULL) { sizeArray_h->long_at_put(i, java_thread->cooked_allocated_bytes()); --- 2110,2126 ---- if (num_threads != sizeArray_h->length()) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "The length of the given long array does not match the length of " "the given array of thread IDs"); } ! if (num_threads == 1 && THREAD->is_Java_thread()) { ! JavaThread* current_thread = (JavaThread*)THREAD; ! if (ids_ah->long_at(0) == java_lang_Thread::thread_id(current_thread->threadObj())) { ! sizeArray_h->long_at_put(0, current_thread->cooked_allocated_bytes()); ! return; ! } ! } ThreadsListHandle tlh; for (int i = 0; i < num_threads; i++) { JavaThread* java_thread = tlh.list()->find_JavaThread_from_java_tid(ids_ah->long_at(i)); if (java_thread != NULL) { sizeArray_h->long_at_put(i, java_thread->cooked_allocated_bytes());
*** 2125,2134 **** --- 2146,2161 ---- JavaThread* java_thread = NULL; if (thread_id == 0) { // current thread return os::current_thread_cpu_time(user_sys_cpu_time != 0); } else { + if (THREAD->is_Java_thread()) { + JavaThread* current_thread = (JavaThread*)THREAD; + if (thread_id == java_lang_Thread::thread_id(current_thread->threadObj())) { + return os::thread_cpu_time((Thread*) current_thread, user_sys_cpu_time != 0); + } + } ThreadsListHandle tlh; java_thread = tlh.list()->find_JavaThread_from_java_tid(thread_id); if (java_thread != NULL) { return os::thread_cpu_time((Thread*) java_thread, user_sys_cpu_time != 0); }
*** 2166,2176 **** if (num_threads != timeArray_h->length()) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "The length of the given long array does not match the length of " "the given array of thread IDs"); } ! ThreadsListHandle tlh; for (int i = 0; i < num_threads; i++) { JavaThread* java_thread = tlh.list()->find_JavaThread_from_java_tid(ids_ah->long_at(i)); if (java_thread != NULL) { timeArray_h->long_at_put(i, os::thread_cpu_time((Thread*)java_thread, --- 2193,2210 ---- if (num_threads != timeArray_h->length()) { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "The length of the given long array does not match the length of " "the given array of thread IDs"); } ! if (num_threads == 1 && THREAD->is_Java_thread()) { ! JavaThread* current_thread = (JavaThread*)THREAD; ! if (ids_ah->long_at(0) == java_lang_Thread::thread_id(current_thread->threadObj())) { ! timeArray_h->long_at_put(0, os::thread_cpu_time((Thread*)current_thread, ! user_sys_cpu_time != 0)); ! return; ! } ! } ThreadsListHandle tlh; for (int i = 0; i < num_threads; i++) { JavaThread* java_thread = tlh.list()->find_JavaThread_from_java_tid(ids_ah->long_at(i)); if (java_thread != NULL) { timeArray_h->long_at_put(i, os::thread_cpu_time((Thread*)java_thread,
< prev index next >