1783 char* name = java_lang_String::as_utf8_string(fn); 1784 Flag* flag = Flag::find_flag(name, strlen(name)); 1785 if (flag == NULL) { 1786 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), 1787 "Flag does not exist."); 1788 } 1789 if (!flag->is_writeable()) { 1790 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), 1791 "This flag is not writeable."); 1792 } 1793 1794 bool succeed; 1795 if (flag->is_bool()) { 1796 bool bvalue = (new_value.z == JNI_TRUE ? true : false); 1797 succeed = CommandLineFlags::boolAtPut(name, &bvalue, MANAGEMENT); 1798 } else if (flag->is_intx()) { 1799 intx ivalue = (intx)new_value.j; 1800 succeed = CommandLineFlags::intxAtPut(name, &ivalue, MANAGEMENT); 1801 } else if (flag->is_uintx()) { 1802 uintx uvalue = (uintx)new_value.j; 1803 succeed = CommandLineFlags::uintxAtPut(name, &uvalue, MANAGEMENT); 1804 } else if (flag->is_uint64_t()) { 1805 uint64_t uvalue = (uint64_t)new_value.j; 1806 succeed = CommandLineFlags::uint64_tAtPut(name, &uvalue, MANAGEMENT); 1807 } else if (flag->is_ccstr()) { 1808 oop str = JNIHandles::resolve_external_guard(new_value.l); 1809 if (str == NULL) { 1810 THROW(vmSymbols::java_lang_NullPointerException()); 1811 } 1812 ccstr svalue = java_lang_String::as_utf8_string(str); 1813 succeed = CommandLineFlags::ccstrAtPut(name, &svalue, MANAGEMENT); 1814 } 1815 assert(succeed, "Setting flag should succeed"); 1816 JVM_END 1817 1818 class ThreadTimesClosure: public ThreadClosure { 1819 private: 1820 objArrayHandle _names_strings; 1821 char **_names_chars; 1822 typeArrayOop _times; | 1783 char* name = java_lang_String::as_utf8_string(fn); 1784 Flag* flag = Flag::find_flag(name, strlen(name)); 1785 if (flag == NULL) { 1786 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), 1787 "Flag does not exist."); 1788 } 1789 if (!flag->is_writeable()) { 1790 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), 1791 "This flag is not writeable."); 1792 } 1793 1794 bool succeed; 1795 if (flag->is_bool()) { 1796 bool bvalue = (new_value.z == JNI_TRUE ? true : false); 1797 succeed = CommandLineFlags::boolAtPut(name, &bvalue, MANAGEMENT); 1798 } else if (flag->is_intx()) { 1799 intx ivalue = (intx)new_value.j; 1800 succeed = CommandLineFlags::intxAtPut(name, &ivalue, MANAGEMENT); 1801 } else if (flag->is_uintx()) { 1802 uintx uvalue = (uintx)new_value.j; 1803 1804 if (strncmp(name, "MaxHeapFreeRatio", 17) == 0) { 1805 FormatBuffer<80> err_msg(""); 1806 if (!Arguments::verify_MaxHeapFreeRatio(err_msg, uvalue)) { 1807 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), err_msg.buffer()); 1808 } 1809 } else if (strncmp(name, "MinHeapFreeRatio", 17) == 0) { 1810 FormatBuffer<80> err_msg(""); 1811 if (!Arguments::verify_MinHeapFreeRatio(err_msg, uvalue)) { 1812 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), err_msg.buffer()); 1813 } 1814 } 1815 succeed = CommandLineFlags::uintxAtPut(name, &uvalue, MANAGEMENT); 1816 } else if (flag->is_uint64_t()) { 1817 uint64_t uvalue = (uint64_t)new_value.j; 1818 succeed = CommandLineFlags::uint64_tAtPut(name, &uvalue, MANAGEMENT); 1819 } else if (flag->is_ccstr()) { 1820 oop str = JNIHandles::resolve_external_guard(new_value.l); 1821 if (str == NULL) { 1822 THROW(vmSymbols::java_lang_NullPointerException()); 1823 } 1824 ccstr svalue = java_lang_String::as_utf8_string(str); 1825 succeed = CommandLineFlags::ccstrAtPut(name, &svalue, MANAGEMENT); 1826 } 1827 assert(succeed, "Setting flag should succeed"); 1828 JVM_END 1829 1830 class ThreadTimesClosure: public ThreadClosure { 1831 private: 1832 objArrayHandle _names_strings; 1833 char **_names_chars; 1834 typeArrayOop _times; |