comparison src/share/vm/opto/c2compiler.cpp @ 23848:3e1cd663c2d3

8055530: assert(_exits.control()->is_top() || !_gvn.type(ret_phi)->empty()) failed: return value must be well defined Summary: concurrent class loading causes return phi to become top Reviewed-by: kvn
author shshahma
date Fri, 15 Apr 2016 12:02:37 +0530
parents ddce0b7cee93
children f13e777eb255
comparison
equal deleted inserted replaced
23847:b5c3e9670fa0 23848:3e1cd663c2d3
46 const char* C2Compiler::retry_no_subsuming_loads() { 46 const char* C2Compiler::retry_no_subsuming_loads() {
47 return "retry without subsuming loads"; 47 return "retry without subsuming loads";
48 } 48 }
49 const char* C2Compiler::retry_no_escape_analysis() { 49 const char* C2Compiler::retry_no_escape_analysis() {
50 return "retry without escape analysis"; 50 return "retry without escape analysis";
51 }
52 const char* C2Compiler::retry_class_loading_during_parsing() {
53 return "retry class loading during parsing";
51 } 54 }
52 bool C2Compiler::init_c2_runtime() { 55 bool C2Compiler::init_c2_runtime() {
53 56
54 // Check assumptions used while running ADLC 57 // Check assumptions used while running ADLC
55 Compile::adlc_verification(); 58 Compile::adlc_verification();
113 Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing); 116 Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing);
114 117
115 118
116 // Check result and retry if appropriate. 119 // Check result and retry if appropriate.
117 if (C.failure_reason() != NULL) { 120 if (C.failure_reason() != NULL) {
121 if (C.failure_reason_is(retry_class_loading_during_parsing())) {
122 env->record_failure(C.failure_reason());
123 continue; // retry
124 }
118 if (C.failure_reason_is(retry_no_subsuming_loads())) { 125 if (C.failure_reason_is(retry_no_subsuming_loads())) {
119 assert(subsume_loads, "must make progress"); 126 assert(subsume_loads, "must make progress");
120 subsume_loads = false; 127 subsume_loads = false;
121 continue; // retry 128 continue; // retry
122 } 129 }