8153073: UL: Set filesize option with k/m/g
authorysuenaga
Wed, 04 May 2016 21:53:01 -0400
changeset 38195 d317aafcc87c
parent 38191 3c2ae71d9b63
child 38196 0e7b75a1cfa8
8153073: UL: Set filesize option with k/m/g Reviewed-by: mlarsson, dholmes
hotspot/src/share/vm/logging/logConfiguration.cpp
hotspot/src/share/vm/logging/logFileOutput.cpp
hotspot/src/share/vm/runtime/arguments.cpp
hotspot/src/share/vm/runtime/arguments.hpp
hotspot/test/serviceability/logging/TestLogRotation.java
--- a/hotspot/src/share/vm/logging/logConfiguration.cpp	Wed May 04 23:45:10 2016 +0000
+++ b/hotspot/src/share/vm/logging/logConfiguration.cpp	Wed May 04 21:53:01 2016 -0400
@@ -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	Wed May 04 23:45:10 2016 +0000
+++ b/hotspot/src/share/vm/logging/logFileOutput.cpp	Wed May 04 21:53:01 2016 -0400
@@ -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	Wed May 04 23:45:10 2016 +0000
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed May 04 21:53:01 2016 -0400
@@ -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	Wed May 04 23:45:10 2016 +0000
+++ b/hotspot/src/share/vm/runtime/arguments.hpp	Wed May 04 21:53:01 2016 -0400
@@ -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	Wed May 04 23:45:10 2016 +0000
+++ b/hotspot/test/serviceability/logging/TestLogRotation.java	Wed May 04 21:53:01 2016 -0400
@@ -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