1686 num_entries++; 1687 } 1688 } 1689 return num_entries; 1690 } 1691 JVM_END 1692 1693 JVM_ENTRY(void, jmm_SetVMGlobal(JNIEnv *env, jstring flag_name, jvalue new_value)) 1694 ResourceMark rm(THREAD); 1695 1696 oop fn = JNIHandles::resolve_external_guard(flag_name); 1697 if (fn == NULL) { 1698 THROW_MSG(vmSymbols::java_lang_NullPointerException(), 1699 "The flag name cannot be null."); 1700 } 1701 char* name = java_lang_String::as_utf8_string(fn); 1702 1703 FormatBuffer<80> err_msg("%s", ""); 1704 int succeed = WriteableFlags::set_flag(name, new_value, Flag::MANAGEMENT, err_msg); 1705 1706 if (succeed != WriteableFlags::SUCCESS) { 1707 if (succeed == WriteableFlags::MISSING_VALUE) { 1708 // missing value causes NPE to be thrown 1709 THROW(vmSymbols::java_lang_NullPointerException()); 1710 } else { 1711 // all the other errors are reported as IAE with the appropriate error message 1712 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), 1713 err_msg.buffer()); 1714 } 1715 } 1716 assert(succeed == WriteableFlags::SUCCESS, "Setting flag should succeed"); 1717 JVM_END 1718 1719 class ThreadTimesClosure: public ThreadClosure { 1720 private: 1721 objArrayHandle _names_strings; 1722 char **_names_chars; 1723 typeArrayHandle _times; 1724 int _names_len; 1725 int _times_len; 1726 int _count; 1727 1728 public: 1729 ThreadTimesClosure(objArrayHandle names, typeArrayHandle times); 1730 ~ThreadTimesClosure(); 1731 virtual void do_thread(Thread* thread); 1732 void do_unlocked(); 1733 int count() { return _count; } 1734 }; 1735 1736 ThreadTimesClosure::ThreadTimesClosure(objArrayHandle names, | 1686 num_entries++; 1687 } 1688 } 1689 return num_entries; 1690 } 1691 JVM_END 1692 1693 JVM_ENTRY(void, jmm_SetVMGlobal(JNIEnv *env, jstring flag_name, jvalue new_value)) 1694 ResourceMark rm(THREAD); 1695 1696 oop fn = JNIHandles::resolve_external_guard(flag_name); 1697 if (fn == NULL) { 1698 THROW_MSG(vmSymbols::java_lang_NullPointerException(), 1699 "The flag name cannot be null."); 1700 } 1701 char* name = java_lang_String::as_utf8_string(fn); 1702 1703 FormatBuffer<80> err_msg("%s", ""); 1704 int succeed = WriteableFlags::set_flag(name, new_value, Flag::MANAGEMENT, err_msg); 1705 1706 if (succeed != Flag::SUCCESS) { 1707 if (succeed == Flag::MISSING_VALUE) { 1708 // missing value causes NPE to be thrown 1709 THROW(vmSymbols::java_lang_NullPointerException()); 1710 } else { 1711 // all the other errors are reported as IAE with the appropriate error message 1712 THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), 1713 err_msg.buffer()); 1714 } 1715 } 1716 assert(succeed == Flag::SUCCESS, "Setting flag should succeed"); 1717 JVM_END 1718 1719 class ThreadTimesClosure: public ThreadClosure { 1720 private: 1721 objArrayHandle _names_strings; 1722 char **_names_chars; 1723 typeArrayHandle _times; 1724 int _names_len; 1725 int _times_len; 1726 int _count; 1727 1728 public: 1729 ThreadTimesClosure(objArrayHandle names, typeArrayHandle times); 1730 ~ThreadTimesClosure(); 1731 virtual void do_thread(Thread* thread); 1732 void do_unlocked(); 1733 int count() { return _count; } 1734 }; 1735 1736 ThreadTimesClosure::ThreadTimesClosure(objArrayHandle names, |