100 |
100 |
101 void C2Compiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci, DirectiveSet* directive) { |
101 void C2Compiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci, DirectiveSet* directive) { |
102 assert(is_initialized(), "Compiler thread must be initialized"); |
102 assert(is_initialized(), "Compiler thread must be initialized"); |
103 |
103 |
104 bool subsume_loads = SubsumeLoads; |
104 bool subsume_loads = SubsumeLoads; |
105 bool do_escape_analysis = DoEscapeAnalysis && !env->should_retain_local_variables(); |
105 bool do_escape_analysis = DoEscapeAnalysis && !env->should_retain_local_variables() |
|
106 && !env->jvmti_can_get_owned_monitor_info(); |
106 bool eliminate_boxing = EliminateAutoBox; |
107 bool eliminate_boxing = EliminateAutoBox; |
107 |
108 |
108 while (!env->failing()) { |
109 while (!env->failing()) { |
109 // Attempt to compile while subsuming loads into machine instructions. |
110 // Attempt to compile while subsuming loads into machine instructions. |
110 Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing, directive); |
111 Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing, directive); |