209 tty->print("c2-osr");
210 }
211 tty->print(" status=");
212 if (mh->queued_for_compilation()) {
213 tty->print("in-queue");
214 } else tty->print("idle");
215 }
216 tty->print_cr("]");
217 }
218
219 void TieredThresholdPolicy::initialize() {
220 int count = CICompilerCount;
221 bool c1_only = TieredStopAtLevel < CompLevel_full_optimization;
222 #ifdef _LP64
223 // Turn on ergonomic compiler count selection
224 if (FLAG_IS_DEFAULT(CICompilerCountPerCPU) && FLAG_IS_DEFAULT(CICompilerCount)) {
225 FLAG_SET_DEFAULT(CICompilerCountPerCPU, true);
226 }
227 if (CICompilerCountPerCPU) {
228 // Simple log n seems to grow too slowly for tiered, try something faster: log n * log log n
229 int log_cpu = log2_intptr(os::active_processor_count());
230 int loglog_cpu = log2_intptr(MAX2(log_cpu, 1));
231 count = MAX2(log_cpu * loglog_cpu * 3 / 2, 2);
232 // Make sure there is enough space in the code cache to hold all the compiler buffers
233 size_t c1_size = Compiler::code_buffer_size();
234 size_t c2_size = C2Compiler::initial_code_buffer_size();
235 size_t buffer_size = c1_only ? c1_size : (c1_size/3 + 2*c2_size/3);
236 int max_count = (ReservedCodeCacheSize - (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3))) / (int)buffer_size;
237 if (count > max_count) {
238 // Lower the compiler count such that all buffers fit into the code cache
239 count = MAX2(max_count, c1_only ? 1 : 2);
240 }
241 FLAG_SET_ERGO(intx, CICompilerCount, count);
242 }
243 #else
244 // On 32-bit systems, the number of compiler threads is limited to 3.
245 // On these systems, the virtual address space available to the JVM
246 // is usually limited to 2-4 GB (the exact value depends on the platform).
247 // As the compilers (especially C2) can consume a large amount of
248 // memory, scaling the number of compiler threads with the number of
249 // available cores can result in the exhaustion of the address space
250 /// available to the VM and thus cause the VM to crash.
|
209 tty->print("c2-osr");
210 }
211 tty->print(" status=");
212 if (mh->queued_for_compilation()) {
213 tty->print("in-queue");
214 } else tty->print("idle");
215 }
216 tty->print_cr("]");
217 }
218
219 void TieredThresholdPolicy::initialize() {
220 int count = CICompilerCount;
221 bool c1_only = TieredStopAtLevel < CompLevel_full_optimization;
222 #ifdef _LP64
223 // Turn on ergonomic compiler count selection
224 if (FLAG_IS_DEFAULT(CICompilerCountPerCPU) && FLAG_IS_DEFAULT(CICompilerCount)) {
225 FLAG_SET_DEFAULT(CICompilerCountPerCPU, true);
226 }
227 if (CICompilerCountPerCPU) {
228 // Simple log n seems to grow too slowly for tiered, try something faster: log n * log log n
229 int log_cpu = log2_int(os::active_processor_count());
230 int loglog_cpu = log2_int(MAX2(log_cpu, 1));
231 count = MAX2(log_cpu * loglog_cpu * 3 / 2, 2);
232 // Make sure there is enough space in the code cache to hold all the compiler buffers
233 size_t c1_size = Compiler::code_buffer_size();
234 size_t c2_size = C2Compiler::initial_code_buffer_size();
235 size_t buffer_size = c1_only ? c1_size : (c1_size/3 + 2*c2_size/3);
236 int max_count = (ReservedCodeCacheSize - (CodeCacheMinimumUseSpace DEBUG_ONLY(* 3))) / (int)buffer_size;
237 if (count > max_count) {
238 // Lower the compiler count such that all buffers fit into the code cache
239 count = MAX2(max_count, c1_only ? 1 : 2);
240 }
241 FLAG_SET_ERGO(intx, CICompilerCount, count);
242 }
243 #else
244 // On 32-bit systems, the number of compiler threads is limited to 3.
245 // On these systems, the virtual address space available to the JVM
246 // is usually limited to 2-4 GB (the exact value depends on the platform).
247 // As the compilers (especially C2) can consume a large amount of
248 // memory, scaling the number of compiler threads with the number of
249 // available cores can result in the exhaustion of the address space
250 /// available to the VM and thus cause the VM to crash.
|