src/share/vm/runtime/commandLineFlagRangeList.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/runtime/commandLineFlagRangeList.cpp	Fri Jul 31 12:40:18 2015
--- new/src/share/vm/runtime/commandLineFlagRangeList.cpp	Fri Jul 31 12:40:18 2015

*** 30,39 **** --- 30,48 ---- #include "runtime/commandLineFlagRangeList.hpp" #include "runtime/os.hpp" #include "utilities/defaultStream.hpp" #include "utilities/macros.hpp" + static void print_range_error_if_needed(bool verbose, const char* msg, ...) { + if (verbose) { + va_list listPointer; + va_start(listPointer, msg); + jio_vfprintf(defaultStream::error_stream(), msg, listPointer); + va_end(listPointer); + } + } + class CommandLineFlagRange_int : public CommandLineFlagRange { int _min; int _max; public:
*** 42,56 **** --- 51,64 ---- _min=min, _max=max; } Flag::Error check_int(int value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "int %s=%d is outside the allowed range [ %d ... %d ]\n", + print_range_error_if_needed(verbose, + "int %s=%d is outside the allowed range " ! "[ %d ... %d ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 70,84 **** --- 78,91 ---- _min=min, _max=max; } Flag::Error check_intx(intx value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "intx %s=" INTX_FORMAT " is outside the allowed range [ " INTX_FORMAT " ... " INTX_FORMAT " ]\n", + print_range_error_if_needed(verbose, + "intx %s=" INTX_FORMAT " is outside the allowed range " ! "[ " INTX_FORMAT " ... " INTX_FORMAT " ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 98,112 **** --- 105,118 ---- _min=min, _max=max; } Flag::Error check_uint(uint value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "uintx %s=%u is outside the allowed range [ %u ... %u ]\n", + print_range_error_if_needed(verbose, + "uint %s=%u is outside the allowed range " ! "[ %u ... %u ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 126,140 **** --- 132,145 ---- _min=min, _max=max; } Flag::Error check_uintx(uintx value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "uintx %s=" UINTX_FORMAT " is outside the allowed range [ " UINTX_FORMAT " ... " UINTX_FORMAT " ]\n", + print_range_error_if_needed(verbose, + "uintx %s=" UINTX_FORMAT " is outside the allowed range " ! "[ " UINTX_FORMAT " ... " UINTX_FORMAT " ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 154,168 **** --- 159,172 ---- _min=min, _max=max; } Flag::Error check_uint64_t(uint64_t value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "uint64_t %s=" UINT64_FORMAT " is outside the allowed range [ " UINT64_FORMAT " ... " UINT64_FORMAT " ]\n", + print_range_error_if_needed(verbose, + "uint64_t %s=" UINT64_FORMAT " is outside the allowed range " ! "[ " UINT64_FORMAT " ... " UINT64_FORMAT " ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 182,196 **** --- 186,199 ---- _min=min, _max=max; } Flag::Error check_size_t(size_t value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "size_t %s=" SIZE_FORMAT " is outside the allowed range [ " SIZE_FORMAT " ... " SIZE_FORMAT " ]\n", + print_range_error_if_needed(verbose, + "size_t %s=" SIZE_FORMAT " is outside the allowed range " ! "[ " SIZE_FORMAT " ... " SIZE_FORMAT " ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 210,224 **** --- 213,226 ---- _min=min, _max=max; } Flag::Error check_double(double value, bool verbose = true) { if ((value < _min) || (value > _max)) { if (verbose == true) { jio_fprintf(defaultStream::error_stream(), ! "double %s=%f is outside the allowed range [ %f ... %f ]\n", + print_range_error_if_needed(verbose, + "double %s=%f is outside the allowed range " ! "[ %f ... %f ]\n", name(), value, _min, _max); } return Flag::OUT_OF_BOUNDS; } else { return Flag::SUCCESS; } }
*** 365,412 **** --- 367,382 ---- st->print("[ ... ]"); } } bool CommandLineFlagRangeList::check_ranges() { //#define PRINT_RANGES_SIZES #ifdef PRINT_RANGES_SIZES { size_t size_ranges = sizeof(CommandLineFlagRangeList); for (int i=0; i<length(); i++) { size_ranges += sizeof(CommandLineFlagRange); CommandLineFlagRange* range = at(i); const char* name = range->name(); Flag* flag = Flag::find_flag(name, strlen(name), true, true); if (flag->is_intx()) { size_ranges += 2*sizeof(intx); size_ranges += sizeof(CommandLineFlagRange*); } else if (flag->is_uintx()) { size_ranges += 2*sizeof(uintx); size_ranges += sizeof(CommandLineFlagRange*); } else if (flag->is_uint64_t()) { size_ranges += 2*sizeof(uint64_t); size_ranges += sizeof(CommandLineFlagRange*); } else if (flag->is_size_t()) { size_ranges += 2*sizeof(size_t); size_ranges += sizeof(CommandLineFlagRange*); } else if (flag->is_double()) { size_ranges += 2*sizeof(double); size_ranges += sizeof(CommandLineFlagRange*); } } fprintf(stderr, "Size of %d ranges: " SIZE_FORMAT " bytes\n", length(), size_ranges); } #endif // PRINT_RANGES_SIZES // Check ranges. bool status = true; for (int i=0; i<length(); i++) { CommandLineFlagRange* range = at(i); const char* name = range->name(); Flag* flag = Flag::find_flag(name, strlen(name), true, true); if (flag != NULL) { if (flag->is_intx()) { intx value = flag->get_intx(); if (range->check_intx(value, true) != Flag::SUCCESS) status = false; } else if (flag->is_uintx()) { uintx value = flag->get_uintx();
*** 420,427 **** --- 390,396 ---- } else if (flag->is_double()) { double value = flag->get_double(); if (range->check_double(value, true) != Flag::SUCCESS) status = false; } } } return status; }

src/share/vm/runtime/commandLineFlagRangeList.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File