src/share/vm/services/writeableFlags.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
8059557_rev2_to_rev3 Cdiff src/share/vm/services/writeableFlags.cpp
src/share/vm/services/writeableFlags.cpp
Print this page
*** 26,98 ****
#include "classfile/javaClasses.hpp"
#include "runtime/arguments.hpp"
#include "runtime/commandLineFlagRangeList.hpp"
#include "runtime/java.hpp"
#include "runtime/jniHandles.hpp"
- #include "runtime/sharedRuntime.hpp"
#include "services/writeableFlags.hpp"
! #define TEMP_BUF_SIZE 256
static void print_flag_error_message_bounds(const char* name, char* buffer) {
CommandLineFlagRange* range = CommandLineFlagRangeList::find(name);
if (range != NULL) {
! os::strlcat(buffer, "must have value in range ", TEMP_BUF_SIZE);
stringStream stream;
range->print(&stream);
! char* range_string = stream.as_string();
! char range_string_no_whitespaces[TEMP_BUF_SIZE];
! int j = 0;
! for (int i=0; i<TEMP_BUF_SIZE-1; i++) {
if (range_string[i] == '\0') {
break;
} else if (range_string[i] != ' ') {
! range_string_no_whitespaces[j] = range_string[i];
j++;
}
}
! range_string_no_whitespaces[j] = '\0';
!
! os::strlcat(buffer, range_string_no_whitespaces, TEMP_BUF_SIZE);
}
}
PRAGMA_FORMAT_NONLITERAL_IGNORED_EXTERNAL
static void print_flag_error_message_if_needed(Flag::Error error, const char* name, FormatBuffer<80>& err_msg) {
! if (error != Flag::SUCCESS) {
char buffer[TEMP_BUF_SIZE] = {'\0'};
if ((error != Flag::MISSING_NAME) && (name != NULL)) {
! os::strlcat(buffer, name, TEMP_BUF_SIZE);
! os::strlcat(buffer, " error: ", TEMP_BUF_SIZE);
} else {
! os::strlcat(buffer, "Error: ", TEMP_BUF_SIZE);
}
switch (error) {
case Flag::MISSING_NAME:
! os::strlcat(buffer, "flag name is missing.", TEMP_BUF_SIZE); break;
case Flag::MISSING_VALUE:
! os::strlcat(buffer, "parsing the textual form of the value.", TEMP_BUF_SIZE); break;
case Flag::NON_WRITABLE:
! os::strlcat(buffer, "flag is not writeable.", TEMP_BUF_SIZE); break;
case Flag::OUT_OF_BOUNDS:
print_flag_error_message_bounds(name, buffer); break;
case Flag::VIOLATES_CONSTRAINT:
! os::strlcat(buffer, "value violates its flag's constraint.", TEMP_BUF_SIZE); break;
case Flag::INVALID_FLAG:
! os::strlcat(buffer, "there is no flag with the given name.", TEMP_BUF_SIZE); break;
case Flag::ERR_OTHER:
! os::strlcat(buffer, "other, unspecified error related to setting the flag.", TEMP_BUF_SIZE); break;
case Flag::SUCCESS:
break;
}
! buffer[79] = '\0';
PRAGMA_DIAG_PUSH
PRAGMA_FORMAT_NONLITERAL_IGNORED_INTERNAL
err_msg.print(buffer);
PRAGMA_DIAG_POP
- }
}
// set a boolean global flag
Flag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) {
int value = true;
--- 26,100 ----
#include "classfile/javaClasses.hpp"
#include "runtime/arguments.hpp"
#include "runtime/commandLineFlagRangeList.hpp"
#include "runtime/java.hpp"
#include "runtime/jniHandles.hpp"
#include "services/writeableFlags.hpp"
! #define TEMP_BUF_SIZE 80
!
! 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 char* name, char* buffer) {
CommandLineFlagRange* range = CommandLineFlagRangeList::find(name);
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;
} else if (range_string[i] != ' ') {
! buffer[j] = range_string[i];
j++;
}
}
! buffer[j] = '\0';
}
}
PRAGMA_FORMAT_NONLITERAL_IGNORED_EXTERNAL
static void print_flag_error_message_if_needed(Flag::Error error, const char* name, FormatBuffer<80>& err_msg) {
! if (error == Flag::SUCCESS) {
! return;
! }
!
char buffer[TEMP_BUF_SIZE] = {'\0'};
if ((error != Flag::MISSING_NAME) && (name != NULL)) {
! buffer_concat(buffer, name);
! buffer_concat(buffer, " error: ");
} else {
! buffer_concat(buffer, "Error: ");
}
switch (error) {
case Flag::MISSING_NAME:
! buffer_concat(buffer, "flag name is missing."); break;
case Flag::MISSING_VALUE:
! buffer_concat(buffer, "parsing the textual form of the value."); break;
case Flag::NON_WRITABLE:
! buffer_concat(buffer, "flag is not writeable."); break;
case Flag::OUT_OF_BOUNDS:
print_flag_error_message_bounds(name, buffer); break;
case Flag::VIOLATES_CONSTRAINT:
! buffer_concat(buffer, "value violates its flag's constraint."); break;
case Flag::INVALID_FLAG:
! buffer_concat(buffer, "there is no flag with the given name."); break;
case Flag::ERR_OTHER:
! buffer_concat(buffer, "other, unspecified error related to setting the flag."); break;
case Flag::SUCCESS:
break;
}
!
PRAGMA_DIAG_PUSH
PRAGMA_FORMAT_NONLITERAL_IGNORED_INTERNAL
err_msg.print(buffer);
PRAGMA_DIAG_POP
}
// set a boolean global flag
Flag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, Flag::Flags origin, FormatBuffer<80>& err_msg) {
int value = true;
*** 103,113 ****
err_msg.print("flag value must be a boolean (1 or 0)");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_bool_flag(const char* name, bool value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::boolAtPut((char*)name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a int global flag
--- 105,115 ----
err_msg.print("flag value must be a boolean (1 or 0)");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_bool_flag(const char* name, bool value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::boolAtPut(name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a int global flag
*** 154,164 ****
err_msg.print("flag value must be an integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_intx_flag(const char* name, intx value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::intxAtPut((char*)name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a uintx global flag
--- 156,166 ----
err_msg.print("flag value must be an integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_intx_flag(const char* name, intx value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::intxAtPut(name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a uintx global flag
*** 171,181 ****
err_msg.print("flag value must be an unsigned integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_uintx_flag(const char* name, uintx value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::uintxAtPut((char*)name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a uint64_t global flag
--- 173,183 ----
err_msg.print("flag value must be an unsigned integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_uintx_flag(const char* name, uintx value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::uintxAtPut(name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a uint64_t global flag
*** 188,198 ****
err_msg.print("flag value must be an unsigned 64-bit integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_uint64_t_flag(const char* name, uint64_t value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::uint64_tAtPut((char*)name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a size_t global flag
--- 190,200 ----
err_msg.print("flag value must be an unsigned 64-bit integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_uint64_t_flag(const char* name, uint64_t value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::uint64_tAtPut(name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a size_t global flag
*** 205,215 ****
err_msg.print("flag value must be an unsigned integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_size_t_flag(const char* name, size_t value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::size_tAtPut((char*)name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a string global flag using value from AttachOperation
--- 207,217 ----
err_msg.print("flag value must be an unsigned integer");
return Flag::WRONG_FORMAT;
}
Flag::Error WriteableFlags::set_size_t_flag(const char* name, size_t value, Flag::Flags origin, FormatBuffer<80>& err_msg) {
! Flag::Error err = CommandLineFlags::size_tAtPut(name, &value, origin);
print_flag_error_message_if_needed(err, name, err_msg);
return err;
}
// set a string global flag using value from AttachOperation
src/share/vm/services/writeableFlags.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File