src/share/vm/runtime/advancedThresholdPolicy.cpp

Print this page

        

*** 163,173 **** } // Called with the queue locked and with at least one element CompileTask* AdvancedThresholdPolicy::select_task(CompileQueue* compile_queue) { #if INCLUDE_JVMCI ! CompileTask *max_non_jvmci_task = NULL; #endif CompileTask *max_task = NULL; Method* max_method = NULL; jlong t = os::javaTimeMillis(); // Iterate through the queue and find a method with a maximum rate. --- 163,173 ---- } // Called with the queue locked and with at least one element CompileTask* AdvancedThresholdPolicy::select_task(CompileQueue* compile_queue) { #if INCLUDE_JVMCI ! CompileTask *max_blocking_task = NULL; #endif CompileTask *max_task = NULL; Method* max_method = NULL; jlong t = os::javaTimeMillis(); // Iterate through the queue and find a method with a maximum rate.
*** 195,211 **** if (compare_methods(method, max_method)) { max_task = task; max_method = method; } } task = next_task; } #if INCLUDE_JVMCI if (UseJVMCICompiler) { ! if (max_non_jvmci_task != NULL) { ! max_task = max_non_jvmci_task; max_method = max_task->method(); } } #endif --- 195,223 ---- if (compare_methods(method, max_method)) { max_task = task; max_method = method; } } + #ifdef INCLUDE_JVMCI + if (UseJVMCICompiler && task->is_blocking()) { + if (max_blocking_task == NULL || compare_methods(method, max_blocking_task->method())) { + max_blocking_task = task; + } + } + #endif task = next_task; } #if INCLUDE_JVMCI if (UseJVMCICompiler) { ! if (max_blocking_task != NULL) { ! // In blocking compilation mode, the CompileBroker will make ! // compilations submitted by a JVMCI compiler thread non-blocking. These ! // compilations should be scheduled after all blocking compilations ! // to service non-compiler related compilations sooner and reduce the ! // chance of such compilations timing out. ! max_task = max_blocking_task; max_method = max_task->method(); } } #endif