From 9795615d39e2d185e136db316237b6f6249ed179 Mon Sep 17 00:00:00 2001 From: iveresov Date: Mon, 27 Sep 2010 15:04:40 -0700 Subject: 6987115: Non-tiered compilation policy creates unnecessary C1 threads Summary: Fixed NonTieredCompPolicy::compiler_count() to return correct thread count. Reviewed-by: twisti, kvn --- src/share/vm/runtime/compilationPolicy.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src/share/vm/runtime/compilationPolicy.cpp') diff --git a/src/share/vm/runtime/compilationPolicy.cpp b/src/share/vm/runtime/compilationPolicy.cpp index 3d1ccc0a3..132a61018 100644 --- a/src/share/vm/runtime/compilationPolicy.cpp +++ b/src/share/vm/runtime/compilationPolicy.cpp @@ -129,16 +129,31 @@ void NonTieredCompPolicy::initialize() { } } +// 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) { -#ifdef COMPILER1 - if (is_c1_compile(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 COMPILER2 - if (is_c2_compile(comp_level)) { +#ifdef COMPILER1 + if (is_c1_compile(comp_level)) { return _compiler_count; + } else { + return 0; } #endif -- cgit v1.2.3