--- a/hotspot/src/share/vm/logging/logConfiguration.cpp Thu May 05 03:04:55 2016 +0200
+++ b/hotspot/src/share/vm/logging/logConfiguration.cpp Thu May 05 03:53:25 2016 +0000
@@ -464,7 +464,7 @@
" -Xlog:gc=debug:file=gc.txt:none\n"
"\t Log messages tagged with 'gc' tag using 'debug' level to file 'gc.txt' with no decorations.\n\n"
- " -Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1024\n"
+ " -Xlog:gc=trace:file=gctrace.txt:uptimemillis,pids:filecount=5,filesize=1m\n"
"\t Log messages tagged with 'gc' tag using 'trace' level to a rotating fileset of 5 files of size 1MB,\n"
"\t using the base name 'gctrace.txt', with 'uptimemillis' and 'pid' decorations.\n\n"
--- a/hotspot/src/share/vm/logging/logFileOutput.cpp Thu May 05 03:04:55 2016 +0200
+++ b/hotspot/src/share/vm/logging/logFileOutput.cpp Thu May 05 03:53:25 2016 +0000
@@ -26,6 +26,7 @@
#include "logging/logConfiguration.hpp"
#include "logging/logFileOutput.hpp"
#include "memory/allocation.inline.hpp"
+#include "runtime/arguments.hpp"
#include "runtime/os.inline.hpp"
#include "utilities/globalDefinitions.hpp"
#include "utilities/defaultStream.hpp"
@@ -187,14 +188,15 @@
}
_file_count = static_cast<uint>(value);
} else if (strcmp(FileSizeOptionKey, key) == 0) {
- size_t value = parse_value(value_str);
- if (value == SIZE_MAX || value > SIZE_MAX / K) {
+ julong value;
+ success = Arguments::atojulong(value_str, &value);
+ if (!success || (value > SIZE_MAX)) {
errstream->print_cr("Invalid option: %s must be in range [0, "
- SIZE_FORMAT "]", FileSizeOptionKey, SIZE_MAX / K);
+ SIZE_FORMAT "]", FileSizeOptionKey, SIZE_MAX);
success = false;
break;
}
- _rotate_size = value * K;
+ _rotate_size = static_cast<size_t>(value);
} else {
errstream->print_cr("Invalid option '%s' for log file output.", key);
success = false;
--- a/hotspot/src/share/vm/runtime/arguments.cpp Thu May 05 03:04:55 2016 +0200
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Thu May 05 03:53:25 2016 +0000
@@ -778,8 +778,8 @@
return path;
}
-// Parses a memory size specification string.
-static bool atomull(const char *s, julong* result) {
+// Parses a size specification string.
+bool Arguments::atojulong(const char *s, julong* result) {
julong n = 0;
int args_read = 0;
bool is_hex = false;
@@ -885,7 +885,7 @@
return false;
}
- // Check the sign first since atomull() parses only unsigned values.
+ // Check the sign first since atojulong() parses only unsigned values.
if (*value == '-') {
if (!result->is_intx() && !result->is_int()) {
return false;
@@ -893,7 +893,7 @@
value++;
is_neg = true;
}
- if (!atomull(value, &v)) {
+ if (!Arguments::atojulong(value, &v)) {
return false;
}
if (result->is_int()) {
@@ -2693,12 +2693,12 @@
uintx* uintx_arg,
uintx min_size) {
- // Check the sign first since atomull() parses only unsigned values.
+ // Check the sign first since atojulong() parses only unsigned values.
bool value_is_positive = !(*value == '-');
if (value_is_positive) {
julong n;
- bool good_return = atomull(value, &n);
+ bool good_return = atojulong(value, &n);
if (good_return) {
bool above_minimum = n >= min_size;
bool value_is_too_large = n > max_uintx;
@@ -2715,7 +2715,7 @@
Arguments::ArgsRange Arguments::parse_memory_size(const char* s,
julong* long_arg,
julong min_size) {
- if (!atomull(s, long_arg)) return arg_unreadable;
+ if (!atojulong(s, long_arg)) return arg_unreadable;
return check_memory_size(*long_arg, min_size);
}
--- a/hotspot/src/share/vm/runtime/arguments.hpp Thu May 05 03:04:55 2016 +0200
+++ b/hotspot/src/share/vm/runtime/arguments.hpp Thu May 05 03:53:25 2016 +0000
@@ -729,6 +729,8 @@
static bool copy_expand_pid(const char* src, size_t srclen, char* buf, size_t buflen);
static void check_unsupported_dumping_properties() NOT_CDS_RETURN;
+
+ static bool atojulong(const char *s, julong* result);
};
// Disable options not supported in this release, with a warning if they
--- a/hotspot/test/serviceability/logging/TestLogRotation.java Thu May 05 03:04:55 2016 +0200
+++ b/hotspot/test/serviceability/logging/TestLogRotation.java Thu May 05 03:53:25 2016 +0000
@@ -75,7 +75,7 @@
ArrayList<String> args = new ArrayList();
String[] logOpts = new String[]{
"-cp", System.getProperty("java.class.path"),
- "-Xlog:gc=debug:" + logFileName + "::filesize=" + logFileSizeK + ",filecount=" + numberOfFiles,
+ "-Xlog:gc=debug:" + logFileName + "::filesize=" + logFileSizeK + "k,filecount=" + numberOfFiles,
"-XX:-DisableExplicitGC", // to ensure that System.gc() works
"-Xmx128M"};
// System.getProperty("test.java.opts") is '' if no options is set