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