8132525: java -client -XX:+TieredCompilation -XX:CICompilerCount=1 -version asserts since 8130858
authorroland
Wed, 29 Jul 2015 12:33:48 +0200
changeset 32083 1796911eb140
parent 32082 2a3323e25de1
child 32084 7743e6943cdf
8132525: java -client -XX:+TieredCompilation -XX:CICompilerCount=1 -version asserts since 8130858 Summary: TieredCompilation not validated when CICompilerCount is processed Reviewed-by: kvn, gziemski
hotspot/src/share/vm/runtime/commandLineFlagConstraintsCompiler.cpp
hotspot/test/compiler/arguments/CheckCICompilerCount.java
--- a/hotspot/src/share/vm/runtime/commandLineFlagConstraintsCompiler.cpp	Wed Jul 29 08:05:21 2015 +0200
+++ b/hotspot/src/share/vm/runtime/commandLineFlagConstraintsCompiler.cpp	Wed Jul 29 12:33:48 2015 +0200
@@ -71,7 +71,10 @@
 #endif
 
   // The default CICompilerCount's value is CI_COMPILER_COUNT.
-  assert(min_number_of_compiler_threads <= CI_COMPILER_COUNT, "minimum should be less or equal default number");
+  // With a client VM, -XX:+TieredCompilation causes TieredCompilation
+  // to be true here (the option is validated later) and
+  // min_number_of_compiler_threads to exceed CI_COMPILER_COUNT.
+  min_number_of_compiler_threads = MIN2(min_number_of_compiler_threads, CI_COMPILER_COUNT);
 
   if (*value < (intx)min_number_of_compiler_threads) {
     if (verbose == true) {
--- a/hotspot/test/compiler/arguments/CheckCICompilerCount.java	Wed Jul 29 08:05:21 2015 +0200
+++ b/hotspot/test/compiler/arguments/CheckCICompilerCount.java	Wed Jul 29 12:33:48 2015 +0200
@@ -26,6 +26,7 @@
 /*
  * @test CheckCheckCICompilerCount
  * @bug 8130858
+ * @bug 8132525
  * @summary Check that correct range of values for CICompilerCount are allowed depending on whether tiered is enabled or not
  * @library /testlibrary
  * @modules java.base/sun.misc
@@ -36,12 +37,28 @@
 public class CheckCICompilerCount {
     private static final String[][] NON_TIERED_ARGUMENTS = {
         {
+            "-server",
             "-XX:-TieredCompilation",
             "-XX:+PrintFlagsFinal",
             "-XX:CICompilerCount=0",
             "-version"
         },
         {
+            "-server",
+            "-XX:-TieredCompilation",
+            "-XX:+PrintFlagsFinal",
+            "-XX:CICompilerCount=1",
+            "-version"
+        },
+        {
+            "-client",
+            "-XX:-TieredCompilation",
+            "-XX:+PrintFlagsFinal",
+            "-XX:CICompilerCount=0",
+            "-version"
+        },
+        {
+            "-client",
             "-XX:-TieredCompilation",
             "-XX:+PrintFlagsFinal",
             "-XX:CICompilerCount=1",
@@ -56,22 +73,47 @@
         },
         {
             "intx CICompilerCount                          := 1                                   {product}"
+        },
+        {
+            "CICompilerCount=0 must be at least 1",
+            "Improperly specified VM option 'CICompilerCount=0'"
+        },
+        {
+            "intx CICompilerCount                          := 1                                   {product}"
         }
     };
 
     private static final int[] NON_TIERED_EXIT = {
         1,
+        0,
+        1,
         0
     };
 
     private static final String[][] TIERED_ARGUMENTS = {
         {
+            "-server",
             "-XX:+TieredCompilation",
             "-XX:+PrintFlagsFinal",
             "-XX:CICompilerCount=1",
             "-version"
         },
         {
+            "-server",
+            "-XX:+TieredCompilation",
+            "-XX:+PrintFlagsFinal",
+            "-XX:CICompilerCount=2",
+            "-version"
+        },
+        {
+            "-client",
+            "-XX:+TieredCompilation",
+            "-XX:+PrintFlagsFinal",
+            "-XX:CICompilerCount=1",
+            "-version"
+        },
+        {
+            "-client",
             "-XX:+TieredCompilation",
             "-XX:+PrintFlagsFinal",
             "-XX:CICompilerCount=2",
@@ -86,11 +128,20 @@
         },
         {
             "intx CICompilerCount                          := 2                                   {product}"
+        },
+        {
+            "CICompilerCount=1 must be at least 2",
+            "Improperly specified VM option 'CICompilerCount=1'"
+        },
+        {
+            "intx CICompilerCount                          := 2                                   {product}"
         }
     };
 
     private static final int[] TIERED_EXIT = {
         1,
+        0,
+        1,
         0
     };