src/share/vm/services/management.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/services

src/share/vm/services/management.cpp

Print this page
rev 5803 : 8028391: Make the Min/MaxHeapFreeRatio flags manageable
Summary: Made the flags Min- and MaxHeapFreeRatio manageable, and implemented support for these flags in ParallalGC.
Reviewed-by: sla, mgerdin, brutisso


1813   char* name = java_lang_String::as_utf8_string(fn);
1814   Flag* flag = Flag::find_flag(name, strlen(name));
1815   if (flag == NULL) {
1816     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1817               "Flag does not exist.");
1818   }
1819   if (!flag->is_writeable()) {
1820     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1821               "This flag is not writeable.");
1822   }
1823 
1824   bool succeed;
1825   if (flag->is_bool()) {
1826     bool bvalue = (new_value.z == JNI_TRUE ? true : false);
1827     succeed = CommandLineFlags::boolAtPut(name, &bvalue, Flag::MANAGEMENT);
1828   } else if (flag->is_intx()) {
1829     intx ivalue = (intx)new_value.j;
1830     succeed = CommandLineFlags::intxAtPut(name, &ivalue, Flag::MANAGEMENT);
1831   } else if (flag->is_uintx()) {
1832     uintx uvalue = (uintx)new_value.j;












1833     succeed = CommandLineFlags::uintxAtPut(name, &uvalue, Flag::MANAGEMENT);
1834   } else if (flag->is_uint64_t()) {
1835     uint64_t uvalue = (uint64_t)new_value.j;
1836     succeed = CommandLineFlags::uint64_tAtPut(name, &uvalue, Flag::MANAGEMENT);
1837   } else if (flag->is_ccstr()) {
1838     oop str = JNIHandles::resolve_external_guard(new_value.l);
1839     if (str == NULL) {
1840       THROW(vmSymbols::java_lang_NullPointerException());
1841     }
1842     ccstr svalue = java_lang_String::as_utf8_string(str);
1843     succeed = CommandLineFlags::ccstrAtPut(name, &svalue, Flag::MANAGEMENT);
1844   }
1845   assert(succeed, "Setting flag should succeed");
1846 JVM_END
1847 
1848 class ThreadTimesClosure: public ThreadClosure {
1849  private:
1850   objArrayHandle _names_strings;
1851   char **_names_chars;
1852   typeArrayHandle _times;




1813   char* name = java_lang_String::as_utf8_string(fn);
1814   Flag* flag = Flag::find_flag(name, strlen(name));
1815   if (flag == NULL) {
1816     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1817               "Flag does not exist.");
1818   }
1819   if (!flag->is_writeable()) {
1820     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
1821               "This flag is not writeable.");
1822   }
1823 
1824   bool succeed;
1825   if (flag->is_bool()) {
1826     bool bvalue = (new_value.z == JNI_TRUE ? true : false);
1827     succeed = CommandLineFlags::boolAtPut(name, &bvalue, Flag::MANAGEMENT);
1828   } else if (flag->is_intx()) {
1829     intx ivalue = (intx)new_value.j;
1830     succeed = CommandLineFlags::intxAtPut(name, &ivalue, Flag::MANAGEMENT);
1831   } else if (flag->is_uintx()) {
1832     uintx uvalue = (uintx)new_value.j;
1833 
1834     if (strncmp(name, "MaxHeapFreeRatio", 17) == 0) {
1835       FormatBuffer<80> err_msg("");
1836       if (!Arguments::verify_MaxHeapFreeRatio(err_msg, uvalue)) {
1837         THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), err_msg.buffer());
1838       }
1839     } else if (strncmp(name, "MinHeapFreeRatio", 17) == 0) {
1840       FormatBuffer<80> err_msg("");
1841       if (!Arguments::verify_MinHeapFreeRatio(err_msg, uvalue)) {
1842         THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), err_msg.buffer());
1843       }
1844     }
1845     succeed = CommandLineFlags::uintxAtPut(name, &uvalue, Flag::MANAGEMENT);
1846   } else if (flag->is_uint64_t()) {
1847     uint64_t uvalue = (uint64_t)new_value.j;
1848     succeed = CommandLineFlags::uint64_tAtPut(name, &uvalue, Flag::MANAGEMENT);
1849   } else if (flag->is_ccstr()) {
1850     oop str = JNIHandles::resolve_external_guard(new_value.l);
1851     if (str == NULL) {
1852       THROW(vmSymbols::java_lang_NullPointerException());
1853     }
1854     ccstr svalue = java_lang_String::as_utf8_string(str);
1855     succeed = CommandLineFlags::ccstrAtPut(name, &svalue, Flag::MANAGEMENT);
1856   }
1857   assert(succeed, "Setting flag should succeed");
1858 JVM_END
1859 
1860 class ThreadTimesClosure: public ThreadClosure {
1861  private:
1862   objArrayHandle _names_strings;
1863   char **_names_chars;
1864   typeArrayHandle _times;


src/share/vm/services/management.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File