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