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