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