src/share/vm/compiler/compileBroker.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/compiler/compileBroker.cpp	Thu Jan 19 13:25:40 2012
--- new/src/share/vm/compiler/compileBroker.cpp	Thu Jan 19 13:25:36 2012

*** 853,886 **** --- 853,887 ---- java_lang_Thread::set_thread(thread_oop(), compiler_thread); // Note that this only sets the JavaThread _priority field, which by // definition is limited to Java priorities and not OS priorities. // The os-priority is set in the CompilerThread startup code itself + java_lang_Thread::set_priority(thread_oop(), NearMaxPriority); // CLEANUP PRIORITIES: This -if- statement hids a bug whereby the compiler // threads never have their OS priority set. The assumption here is to // enable the Performance group to do flag tuning, figure out a suitable // CompilerThreadPriority, and then remove this 'if' statement (and // comment) and unconditionally set the priority. // Compiler Threads should be at the highest Priority if ( CompilerThreadPriority != -1 ) os::set_native_priority( compiler_thread, CompilerThreadPriority ); else os::set_native_priority( compiler_thread, os::java_to_os_priority[NearMaxPriority]); // Note that I cannot call os::set_priority because it expects Java // priorities and I am *explicitly* using OS priorities so that it's + // Note that we cannot call os::set_priority because it expects Java + // priorities and we are *explicitly* using OS priorities so that it's // possible to set the compiler thread priority higher than any Java // thread. + int native_prio = CompilerThreadPriority; + if (native_prio == -1) { + if (UseCriticalCompilerThreadPriority) { + native_prio = os::java_to_os_priority[CriticalPriority]; + } else { + native_prio = os::java_to_os_priority[NearMaxPriority]; + } + } + os::set_native_priority(compiler_thread, native_prio); + java_lang_Thread::set_daemon(thread_oop()); compiler_thread->set_threadObj(thread_oop()); Threads::add(compiler_thread); Thread::start(compiler_thread); } + // Let go of Threads_lock before yielding os::yield(); // make sure that the compiler thread is started early (especially helpful on SOLARIS) return compiler_thread; }

src/share/vm/compiler/compileBroker.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File