964 { const char *n; |
964 { const char *n; |
965 |
965 |
966 if (name() != NULL) { |
966 if (name() != NULL) { |
967 n = java_lang_String::as_utf8_string(name()); |
967 n = java_lang_String::as_utf8_string(name()); |
968 } else { |
968 } else { |
969 n = UNICODE::as_utf8(NULL, 0); |
969 n = UNICODE::as_utf8((jchar*) NULL, 0); |
970 } |
970 } |
971 |
971 |
972 info_ptr->name = (char *) jvmtiMalloc(strlen(n)+1); |
972 info_ptr->name = (char *) jvmtiMalloc(strlen(n)+1); |
973 if (info_ptr->name == NULL) |
973 if (info_ptr->name == NULL) |
974 return JVMTI_ERROR_OUT_OF_MEMORY; |
974 return JVMTI_ERROR_OUT_OF_MEMORY; |
1185 JavaThread* current_thread = JavaThread::current(); |
1185 JavaThread* current_thread = JavaThread::current(); |
1186 |
1186 |
1187 Handle group_obj (current_thread, JNIHandles::resolve_external_guard(group)); |
1187 Handle group_obj (current_thread, JNIHandles::resolve_external_guard(group)); |
1188 NULL_CHECK(group_obj(), JVMTI_ERROR_INVALID_THREAD_GROUP); |
1188 NULL_CHECK(group_obj(), JVMTI_ERROR_INVALID_THREAD_GROUP); |
1189 |
1189 |
1190 typeArrayHandle name; |
1190 const char* name; |
1191 Handle parent_group; |
1191 Handle parent_group; |
1192 bool is_daemon; |
1192 bool is_daemon; |
1193 ThreadPriority max_priority; |
1193 ThreadPriority max_priority; |
1194 |
1194 |
1195 { MutexLocker mu(Threads_lock); |
1195 { MutexLocker mu(Threads_lock); |
1196 |
1196 |
1197 name = typeArrayHandle(current_thread, |
1197 name = java_lang_ThreadGroup::name(group_obj()); |
1198 java_lang_ThreadGroup::name(group_obj())); |
|
1199 parent_group = Handle(current_thread, java_lang_ThreadGroup::parent(group_obj())); |
1198 parent_group = Handle(current_thread, java_lang_ThreadGroup::parent(group_obj())); |
1200 is_daemon = java_lang_ThreadGroup::is_daemon(group_obj()); |
1199 is_daemon = java_lang_ThreadGroup::is_daemon(group_obj()); |
1201 max_priority = java_lang_ThreadGroup::maxPriority(group_obj()); |
1200 max_priority = java_lang_ThreadGroup::maxPriority(group_obj()); |
1202 } |
1201 } |
1203 |
1202 |
1204 info_ptr->is_daemon = is_daemon; |
1203 info_ptr->is_daemon = is_daemon; |
1205 info_ptr->max_priority = max_priority; |
1204 info_ptr->max_priority = max_priority; |
1206 info_ptr->parent = jni_reference(parent_group); |
1205 info_ptr->parent = jni_reference(parent_group); |
1207 |
1206 |
1208 if (name() != NULL) { |
1207 if (name != NULL) { |
1209 const char* n = UNICODE::as_utf8((jchar*) name->base(T_CHAR), name->length()); |
1208 info_ptr->name = (char*)jvmtiMalloc(strlen(name)+1); |
1210 info_ptr->name = (char *)jvmtiMalloc(strlen(n)+1); |
|
1211 NULL_CHECK(info_ptr->name, JVMTI_ERROR_OUT_OF_MEMORY); |
1209 NULL_CHECK(info_ptr->name, JVMTI_ERROR_OUT_OF_MEMORY); |
1212 strcpy(info_ptr->name, n); |
1210 strcpy(info_ptr->name, name); |
1213 } else { |
1211 } else { |
1214 info_ptr->name = NULL; |
1212 info_ptr->name = NULL; |
1215 } |
1213 } |
1216 |
1214 |
1217 return JVMTI_ERROR_NONE; |
1215 return JVMTI_ERROR_NONE; |