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