changeset 4312:6a1d4ebcda4b

7163534: VM could crashes assert(false) failed: infinite EA connection graph build Summary: In case of time or iterations limit reached C2 stops EA and continue compilation without EA as it does in product VM already. Reviewed-by: twisti
author kvn
date Thu, 25 Oct 2012 17:32:03 -0700
parents cca5d281e05c
children b0556586212c
files src/share/vm/opto/c2_globals.hpp src/share/vm/opto/escape.cpp
diffstat 2 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/c2_globals.hpp	Tue Oct 23 13:06:37 2012 -0700
+++ b/src/share/vm/opto/c2_globals.hpp	Thu Oct 25 17:32:03 2012 -0700
@@ -439,6 +439,9 @@
   product(bool, DoEscapeAnalysis, true,                                     \
           "Perform escape analysis")                                        \
                                                                             \
+  develop(bool, ExitEscapeAnalysisOnTimeout, true,                          \
+          "Exit or throw assert in EA when it reaches time limit")          \
+                                                                            \
   notproduct(bool, PrintEscapeAnalysis, false,                              \
           "Print the results of escape analysis")                           \
                                                                             \
--- a/src/share/vm/opto/escape.cpp	Tue Oct 23 13:06:37 2012 -0700
+++ b/src/share/vm/opto/escape.cpp	Thu Oct 25 17:32:03 2012 -0700
@@ -1073,7 +1073,7 @@
       C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time");
       C->log()->end_elem(" limit'");
     }
-    assert(false, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
+    assert(ExitEscapeAnalysisOnTimeout, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
            time.seconds(), iterations, nodes_size(), ptnodes_worklist.length()));
     // Possible infinite build_connection_graph loop,
     // bailout (no changes to ideal graph were made).