< prev index next >

src/hotspot/share/services/writeableFlags.cpp

Print this page

*** 25,35 **** #include "precompiled.hpp" #include "classfile/javaClasses.hpp" #include "memory/allocation.inline.hpp" #include "runtime/arguments.hpp" #include "runtime/flags/jvmFlag.hpp" - #include "runtime/flags/jvmFlagRangeList.hpp" #include "runtime/java.hpp" #include "runtime/jniHandles.hpp" #include "services/writeableFlags.hpp" #define TEMP_BUF_SIZE 80 --- 25,34 ----
*** 37,52 **** static void buffer_concat(char* buffer, const char* src) { strncat(buffer, src, TEMP_BUF_SIZE - 1 - strlen(buffer)); } static void print_flag_error_message_bounds(const JVMFlag* flag, char* buffer) { ! JVMFlagRange* range = JVMFlagRangeList::find(flag); ! if (range != NULL) { buffer_concat(buffer, "must have value in range "); stringStream stream; ! range->print(&stream); const char* range_string = stream.as_string(); size_t j = strlen(buffer); for (size_t i=0; j<TEMP_BUF_SIZE-1; i++) { if (range_string[i] == '\0') { break; --- 36,50 ---- static void buffer_concat(char* buffer, const char* src) { strncat(buffer, src, TEMP_BUF_SIZE - 1 - strlen(buffer)); } static void print_flag_error_message_bounds(const JVMFlag* flag, char* buffer) { ! if (flag->has_range()) { buffer_concat(buffer, "must have value in range "); stringStream stream; ! flag->print_range(&stream); const char* range_string = stream.as_string(); size_t j = strlen(buffer); for (size_t i=0; j<TEMP_BUF_SIZE-1; i++) { if (range_string[i] == '\0') { break;
*** 62,72 **** static void print_flag_error_message_if_needed(JVMFlag::Error error, const JVMFlag* flag, FormatBuffer<80>& err_msg) { if (error == JVMFlag::SUCCESS) { return; } ! const char* name = flag->_name; char buffer[TEMP_BUF_SIZE] = {'\0'}; if ((error != JVMFlag::MISSING_NAME) && (name != NULL)) { buffer_concat(buffer, name); buffer_concat(buffer, " error: "); } else { --- 60,70 ---- static void print_flag_error_message_if_needed(JVMFlag::Error error, const JVMFlag* flag, FormatBuffer<80>& err_msg) { if (error == JVMFlag::SUCCESS) { return; } ! const char* name = flag->name(); char buffer[TEMP_BUF_SIZE] = {'\0'}; if ((error != JVMFlag::MISSING_NAME) && (name != NULL)) { buffer_concat(buffer, name); buffer_concat(buffer, " error: "); } else {
*** 94,103 **** --- 92,103 ---- } err_msg.print("%s", buffer); } + // TODO: templatize all of the following set_xxx_flag functions! + // set a boolean global flag JVMFlag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { if ((strcasecmp(arg, "true") == 0) || (*arg == '1' && *(arg + 1) == 0)) { return set_bool_flag(name, true, origin, err_msg); } else if ((strcasecmp(arg, "false") == 0) || (*arg == '0' && *(arg + 1) == 0)) {
*** 107,117 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_bool_flag(const char* name, bool value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::boolAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a int global flag --- 107,117 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_bool_flag(const char* name, bool value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::boolAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a int global flag
*** 125,135 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_int_flag(const char* name, int value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::intAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a uint global flag --- 125,135 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_int_flag(const char* name, int value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::intAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a uint global flag
*** 143,153 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_uint_flag(const char* name, uint value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::uintAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a intx global flag --- 143,153 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_uint_flag(const char* name, uint value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::uintAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a intx global flag
*** 161,171 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_intx_flag(const char* name, intx value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::intxAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a uintx global flag --- 161,171 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_intx_flag(const char* name, intx value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::intxAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a uintx global flag
*** 179,189 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_uintx_flag(const char* name, uintx value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::uintxAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a uint64_t global flag --- 179,189 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_uintx_flag(const char* name, uintx value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::uintxAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a uint64_t global flag
*** 197,207 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_uint64_t_flag(const char* name, uint64_t value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::uint64_tAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a size_t global flag --- 197,207 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_uint64_t_flag(const char* name, uint64_t value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::uint64_tAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a size_t global flag
*** 215,225 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_size_t_flag(const char* name, size_t value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::size_tAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a double global flag --- 215,225 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_size_t_flag(const char* name, size_t value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::size_tAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a double global flag
*** 233,251 **** return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_double_flag(const char* name, double value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::doubleAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a string global flag using value from AttachOperation JVMFlag::Error WriteableFlags::set_ccstr_flag(const char* name, const char* value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::ccstrAtPut(flag, &value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } /* sets a writeable flag to the provided value --- 233,251 ---- return JVMFlag::WRONG_FORMAT; } JVMFlag::Error WriteableFlags::set_double_flag(const char* name, double value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::doubleAtPut(flag, value, origin); print_flag_error_message_if_needed(err, flag, err_msg); return err; } // set a string global flag using value from AttachOperation JVMFlag::Error WriteableFlags::set_ccstr_flag(const char* name, const char* value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { JVMFlag* flag = JVMFlag::find_flag(name); ! JVMFlag::Error err = JVMFlag::ccstrAtPut(flag, &value, origin); // TODO -- free the old value?? print_flag_error_message_if_needed(err, flag, err_msg); return err; } /* sets a writeable flag to the provided value
*** 298,324 **** if (flag_value == NULL) { err_msg.print("flag value is missing"); return JVMFlag::MISSING_VALUE; } if (f->is_bool()) { ! return set_bool_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_int()) { ! return set_int_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_uint()) { ! return set_uint_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_intx()) { ! return set_intx_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_uintx()) { ! return set_uintx_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_uint64_t()) { ! return set_uint64_t_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_size_t()) { ! return set_size_t_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_double()) { ! return set_double_flag(f->_name, flag_value, origin, err_msg); } else if (f->is_ccstr()) { ! return set_ccstr_flag(f->_name, flag_value, origin, err_msg); } else { ShouldNotReachHere(); } return JVMFlag::ERR_OTHER; } --- 298,324 ---- if (flag_value == NULL) { err_msg.print("flag value is missing"); return JVMFlag::MISSING_VALUE; } if (f->is_bool()) { ! return set_bool_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_int()) { ! return set_int_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_uint()) { ! return set_uint_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_intx()) { ! return set_intx_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_uintx()) { ! return set_uintx_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_uint64_t()) { ! return set_uint64_t_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_size_t()) { ! return set_size_t_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_double()) { ! return set_double_flag(f->name(), flag_value, origin, err_msg); } else if (f->is_ccstr()) { ! return set_ccstr_flag(f->name(), flag_value, origin, err_msg); } else { ShouldNotReachHere(); } return JVMFlag::ERR_OTHER; }
*** 327,366 **** JVMFlag::Error WriteableFlags::set_flag_from_jvalue(JVMFlag* f, const void* value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { jvalue new_value = *(jvalue*)value; if (f->is_bool()) { bool bvalue = (new_value.z == JNI_TRUE ? true : false); ! return set_bool_flag(f->_name, bvalue, origin, err_msg); } else if (f->is_int()) { int ivalue = (int)new_value.j; ! return set_int_flag(f->_name, ivalue, origin, err_msg); } else if (f->is_uint()) { uint uvalue = (uint)new_value.j; ! return set_uint_flag(f->_name, uvalue, origin, err_msg); } else if (f->is_intx()) { intx ivalue = (intx)new_value.j; ! return set_intx_flag(f->_name, ivalue, origin, err_msg); } else if (f->is_uintx()) { uintx uvalue = (uintx)new_value.j; ! return set_uintx_flag(f->_name, uvalue, origin, err_msg); } else if (f->is_uint64_t()) { uint64_t uvalue = (uint64_t)new_value.j; ! return set_uint64_t_flag(f->_name, uvalue, origin, err_msg); } else if (f->is_size_t()) { size_t svalue = (size_t)new_value.j; ! return set_size_t_flag(f->_name, svalue, origin, err_msg); } else if (f->is_double()) { double dvalue = (double)new_value.d; ! return set_double_flag(f->_name, dvalue, origin, err_msg); } else if (f->is_ccstr()) { oop str = JNIHandles::resolve_external_guard(new_value.l); if (str == NULL) { err_msg.print("flag value is missing"); return JVMFlag::MISSING_VALUE; } ccstr svalue = java_lang_String::as_utf8_string(str); ! JVMFlag::Error ret = WriteableFlags::set_ccstr_flag(f->_name, svalue, origin, err_msg); if (ret != JVMFlag::SUCCESS) { FREE_C_HEAP_ARRAY(char, svalue); } return ret; } else { --- 327,366 ---- JVMFlag::Error WriteableFlags::set_flag_from_jvalue(JVMFlag* f, const void* value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) { jvalue new_value = *(jvalue*)value; if (f->is_bool()) { bool bvalue = (new_value.z == JNI_TRUE ? true : false); ! return set_bool_flag(f->name(), bvalue, origin, err_msg); } else if (f->is_int()) { int ivalue = (int)new_value.j; ! return set_int_flag(f->name(), ivalue, origin, err_msg); } else if (f->is_uint()) { uint uvalue = (uint)new_value.j; ! return set_uint_flag(f->name(), uvalue, origin, err_msg); } else if (f->is_intx()) { intx ivalue = (intx)new_value.j; ! return set_intx_flag(f->name(), ivalue, origin, err_msg); } else if (f->is_uintx()) { uintx uvalue = (uintx)new_value.j; ! return set_uintx_flag(f->name(), uvalue, origin, err_msg); } else if (f->is_uint64_t()) { uint64_t uvalue = (uint64_t)new_value.j; ! return set_uint64_t_flag(f->name(), uvalue, origin, err_msg); } else if (f->is_size_t()) { size_t svalue = (size_t)new_value.j; ! return set_size_t_flag(f->name(), svalue, origin, err_msg); } else if (f->is_double()) { double dvalue = (double)new_value.d; ! return set_double_flag(f->name(), dvalue, origin, err_msg); } else if (f->is_ccstr()) { oop str = JNIHandles::resolve_external_guard(new_value.l); if (str == NULL) { err_msg.print("flag value is missing"); return JVMFlag::MISSING_VALUE; } ccstr svalue = java_lang_String::as_utf8_string(str); ! JVMFlag::Error ret = WriteableFlags::set_ccstr_flag(f->name(), svalue, origin, err_msg); if (ret != JVMFlag::SUCCESS) { FREE_C_HEAP_ARRAY(char, svalue); } return ret; } else {
< prev index next >