src/hotspot/share/compiler/compileBroker.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/hotspot/share/compiler/compileBroker.cpp	Sat May  4 16:22:10 2019
--- new/src/hotspot/share/compiler/compileBroker.cpp	Sat May  4 16:22:08 2019

*** 68,78 **** --- 68,77 ---- #include "c1/c1_Compiler.hpp" #endif #if INCLUDE_JVMCI #include "jvmci/jvmciEnv.hpp" #include "jvmci/jvmciRuntime.hpp" #include "runtime/vframe.hpp" #endif #ifdef COMPILER2 #include "opto/c2compiler.hpp" #endif
*** 1061,1086 **** --- 1060,1087 ---- // The compilation falls outside the allowed range. return; } #if INCLUDE_JVMCI - if (UseJVMCICompiler && blocking && !UseJVMCINativeLibrary) { // Don't allow blocking compiles for requests triggered by JVMCI. if (thread->is_Compiler_thread()) { blocking = false; } + if (!UseJVMCINativeLibrary) { // Don't allow blocking compiles if inside a class initializer or while performing class loading vframeStream vfst((JavaThread*) thread); for (; !vfst.at_end(); vfst.next()) { if (vfst.method()->is_static_initializer() || (vfst.method()->method_holder()->is_subclass_of(SystemDictionary::ClassLoader_klass()) && vfst.method()->name() == vmSymbols::loadClass_name())) { blocking = false; break; } } + } // Don't allow blocking compilation requests to JVMCI // if JVMCI itself is not yet initialized if (!JVMCI::is_compiler_initialized() && compiler(comp_level)->is_jvmci()) { blocking = false;
*** 2061,2071 **** --- 2062,2072 ---- failure_reason = "redefined method"; retry_message = "not retryable"; compilable = ciEnv::MethodCompilable_never; } else { JVMCICompileState compile_state(task, system_dictionary_modification_counter); ! JVMCIEnv env(thread, &compile_state, __FILE__, __LINE__); methodHandle method(thread, target_handle); env.runtime()->compile_method(&env, jvmci, method, osr_bci); failure_reason = compile_state.failure_reason(); failure_reason_on_C_heap = compile_state.failure_reason_on_C_heap();

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