hotspot/src/share/vm/prims/jvmtiEnv.cpp
changeset 33628 09241459a8b8
parent 32595 8cde9aca5e9f
child 33638 ef49ed90010b
equal deleted inserted replaced
33627:c5b7455f846e 33628:09241459a8b8
   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;