hotspot/src/share/vm/services/management.cpp
changeset 4571 80b553bddc26
parent 4437 d1abc17afffb
child 5091 4b7db223b9bd
equal deleted inserted replaced
4569:f372ea9e5ed4 4571:80b553bddc26
   489   char** vm_flags = Arguments::jvm_flags_array();
   489   char** vm_flags = Arguments::jvm_flags_array();
   490   char** vm_args = Arguments::jvm_args_array();
   490   char** vm_args = Arguments::jvm_args_array();
   491   int num_flags = Arguments::num_jvm_flags();
   491   int num_flags = Arguments::num_jvm_flags();
   492   int num_args = Arguments::num_jvm_args();
   492   int num_args = Arguments::num_jvm_args();
   493 
   493 
   494   instanceKlassHandle ik (THREAD, SystemDictionary::string_klass());
   494   instanceKlassHandle ik (THREAD, SystemDictionary::String_klass());
   495   objArrayOop r = oopFactory::new_objArray(ik(), num_args + num_flags, CHECK_NULL);
   495   objArrayOop r = oopFactory::new_objArray(ik(), num_args + num_flags, CHECK_NULL);
   496   objArrayHandle result_h(THREAD, r);
   496   objArrayHandle result_h(THREAD, r);
   497 
   497 
   498   int index = 0;
   498   int index = 0;
   499   for (int j = 0; j < num_flags; j++, index++) {
   499   for (int j = 0; j < num_flags; j++, index++) {
  1319   ResourceMark rm(THREAD);
  1319   ResourceMark rm(THREAD);
  1320 
  1320 
  1321   LoadedClassesEnumerator lce(THREAD);  // Pass current Thread as parameter
  1321   LoadedClassesEnumerator lce(THREAD);  // Pass current Thread as parameter
  1322 
  1322 
  1323   int num_classes = lce.num_loaded_classes();
  1323   int num_classes = lce.num_loaded_classes();
  1324   objArrayOop r = oopFactory::new_objArray(SystemDictionary::class_klass(), num_classes, CHECK_0);
  1324   objArrayOop r = oopFactory::new_objArray(SystemDictionary::Class_klass(), num_classes, CHECK_0);
  1325   objArrayHandle classes_ah(THREAD, r);
  1325   objArrayHandle classes_ah(THREAD, r);
  1326 
  1326 
  1327   for (int i = 0; i < num_classes; i++) {
  1327   for (int i = 0; i < num_classes; i++) {
  1328     KlassHandle kh = lce.get_klass(i);
  1328     KlassHandle kh = lce.get_klass(i);
  1329     oop mirror = Klass::cast(kh())->java_mirror();
  1329     oop mirror = Klass::cast(kh())->java_mirror();
  1479 // Returns a String array of all VM global flag names
  1479 // Returns a String array of all VM global flag names
  1480 JVM_ENTRY(jobjectArray, jmm_GetVMGlobalNames(JNIEnv *env))
  1480 JVM_ENTRY(jobjectArray, jmm_GetVMGlobalNames(JNIEnv *env))
  1481   // last flag entry is always NULL, so subtract 1
  1481   // last flag entry is always NULL, so subtract 1
  1482   int nFlags = (int) Flag::numFlags - 1;
  1482   int nFlags = (int) Flag::numFlags - 1;
  1483   // allocate a temp array
  1483   // allocate a temp array
  1484   objArrayOop r = oopFactory::new_objArray(SystemDictionary::string_klass(),
  1484   objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(),
  1485                                            nFlags, CHECK_0);
  1485                                            nFlags, CHECK_0);
  1486   objArrayHandle flags_ah(THREAD, r);
  1486   objArrayHandle flags_ah(THREAD, r);
  1487   int num_entries = 0;
  1487   int num_entries = 0;
  1488   for (int i = 0; i < nFlags; i++) {
  1488   for (int i = 0; i < nFlags; i++) {
  1489     Flag* flag = &Flag::flags[i];
  1489     Flag* flag = &Flag::flags[i];
  1495     }
  1495     }
  1496   }
  1496   }
  1497 
  1497 
  1498   if (num_entries < nFlags) {
  1498   if (num_entries < nFlags) {
  1499     // Return array of right length
  1499     // Return array of right length
  1500     objArrayOop res = oopFactory::new_objArray(SystemDictionary::string_klass(), num_entries, CHECK_0);
  1500     objArrayOop res = oopFactory::new_objArray(SystemDictionary::String_klass(), num_entries, CHECK_0);
  1501     for(int i = 0; i < num_entries; i++) {
  1501     for(int i = 0; i < num_entries; i++) {
  1502       res->obj_at_put(i, flags_ah->obj_at(i));
  1502       res->obj_at_put(i, flags_ah->obj_at(i));
  1503     }
  1503     }
  1504     return (jobjectArray)JNIHandles::make_local(env, res);
  1504     return (jobjectArray)JNIHandles::make_local(env, res);
  1505   }
  1505   }
  1591     // return the requested globals
  1591     // return the requested globals
  1592     objArrayOop ta = objArrayOop(JNIHandles::resolve_non_null(names));
  1592     objArrayOop ta = objArrayOop(JNIHandles::resolve_non_null(names));
  1593     objArrayHandle names_ah(THREAD, ta);
  1593     objArrayHandle names_ah(THREAD, ta);
  1594     // Make sure we have a String array
  1594     // Make sure we have a String array
  1595     klassOop element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
  1595     klassOop element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
  1596     if (element_klass != SystemDictionary::string_klass()) {
  1596     if (element_klass != SystemDictionary::String_klass()) {
  1597       THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
  1597       THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
  1598                  "Array element type is not String class", 0);
  1598                  "Array element type is not String class", 0);
  1599     }
  1599     }
  1600 
  1600 
  1601     int names_length = names_ah->length();
  1601     int names_length = names_ah->length();
  1745   objArrayOop na = objArrayOop(JNIHandles::resolve_non_null(names));
  1745   objArrayOop na = objArrayOop(JNIHandles::resolve_non_null(names));
  1746   objArrayHandle names_ah(THREAD, na);
  1746   objArrayHandle names_ah(THREAD, na);
  1747 
  1747 
  1748   // Make sure we have a String array
  1748   // Make sure we have a String array
  1749   klassOop element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
  1749   klassOop element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
  1750   if (element_klass != SystemDictionary::string_klass()) {
  1750   if (element_klass != SystemDictionary::String_klass()) {
  1751     THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
  1751     THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
  1752                "Array element type is not String class", 0);
  1752                "Array element type is not String class", 0);
  1753   }
  1753   }
  1754 
  1754 
  1755   typeArrayOop ta = typeArrayOop(JNIHandles::resolve_non_null(times));
  1755   typeArrayOop ta = typeArrayOop(JNIHandles::resolve_non_null(times));
  1780   DeadlockCycle* cycle;
  1780   DeadlockCycle* cycle;
  1781   for (cycle = deadlocks; cycle != NULL; cycle = cycle->next()) {
  1781   for (cycle = deadlocks; cycle != NULL; cycle = cycle->next()) {
  1782     num_threads += cycle->num_threads();
  1782     num_threads += cycle->num_threads();
  1783   }
  1783   }
  1784 
  1784 
  1785   objArrayOop r = oopFactory::new_objArray(SystemDictionary::thread_klass(), num_threads, CHECK_NH);
  1785   objArrayOop r = oopFactory::new_objArray(SystemDictionary::Thread_klass(), num_threads, CHECK_NH);
  1786   objArrayHandle threads_ah(THREAD, r);
  1786   objArrayHandle threads_ah(THREAD, r);
  1787 
  1787 
  1788   int index = 0;
  1788   int index = 0;
  1789   for (cycle = deadlocks; cycle != NULL; cycle = cycle->next()) {
  1789   for (cycle = deadlocks; cycle != NULL; cycle = cycle->next()) {
  1790     GrowableArray<JavaThread*>* deadlock_threads = cycle->threads();
  1790     GrowableArray<JavaThread*>* deadlock_threads = cycle->threads();