6987115: Non-tiered compilation policy creates unnecessary C1 threads
authoriveresov
Mon, 27 Sep 2010 15:04:40 -0700
changeset 6747 ab166511728e
parent 6746 c12892ba621d
child 6748 5084ee905ab5
6987115: Non-tiered compilation policy creates unnecessary C1 threads Summary: Fixed NonTieredCompPolicy::compiler_count() to return correct thread count. Reviewed-by: twisti, kvn
hotspot/src/share/vm/runtime/compilationPolicy.cpp
--- a/hotspot/src/share/vm/runtime/compilationPolicy.cpp	Fri Sep 24 13:14:32 2010 -0700
+++ b/hotspot/src/share/vm/runtime/compilationPolicy.cpp	Mon Sep 27 15:04:40 2010 -0700
@@ -129,16 +129,31 @@
   }
 }
 
+// Note: this policy is used ONLY if TieredCompilation is off.
+// compiler_count() behaves the following way:
+// - with TIERED build (with both COMPILER1 and COMPILER2 defined) it should return
+//   zero for the c1 compilation levels, hence the particular ordering of the
+//   statements.
+// - the same should happen when COMPILER2 is defined and COMPILER1 is not
+//   (server build without TIERED defined).
+// - if only COMPILER1 is defined (client build), zero should be returned for
+//   the c2 level.
+// - if neither is defined - always return zero.
 int NonTieredCompPolicy::compiler_count(CompLevel comp_level) {
+  assert(!TieredCompilation, "This policy should not be used with TieredCompilation");
+#ifdef COMPILER2
+  if (is_c2_compile(comp_level)) {
+    return _compiler_count;
+  } else {
+    return 0;
+  }
+#endif
+
 #ifdef COMPILER1
   if (is_c1_compile(comp_level)) {
     return _compiler_count;
-  }
-#endif
-
-#ifdef COMPILER2
-  if (is_c2_compile(comp_level)) {
-    return _compiler_count;
+  } else {
+    return 0;
   }
 #endif