diff 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
line wrap: on
line diff
--- a/src/share/vm/opto/c2compiler.cpp	Thu Apr 21 13:17:25 2016 +0200
+++ b/src/share/vm/opto/c2compiler.cpp	Fri Apr 15 12:02:37 2016 +0530
@@ -49,6 +49,9 @@
 const char* C2Compiler::retry_no_escape_analysis() {
   return "retry without escape analysis";
 }
+const char* C2Compiler::retry_class_loading_during_parsing() {
+  return "retry class loading during parsing";
+}
 bool C2Compiler::init_c2_runtime() {
 
   // Check assumptions used while running ADLC
@@ -115,6 +118,10 @@
 
     // Check result and retry if appropriate.
     if (C.failure_reason() != NULL) {
+      if (C.failure_reason_is(retry_class_loading_during_parsing())) {
+        env->record_failure(C.failure_reason());
+        continue;  // retry
+      }
       if (C.failure_reason_is(retry_no_subsuming_loads())) {
         assert(subsume_loads, "must make progress");
         subsume_loads = false;