提交 04231576 编写于 作者: K kvn

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
上级 ed9b909d
...@@ -439,6 +439,9 @@ ...@@ -439,6 +439,9 @@
product(bool, DoEscapeAnalysis, true, \ product(bool, DoEscapeAnalysis, true, \
"Perform escape analysis") \ "Perform escape analysis") \
\ \
develop(bool, ExitEscapeAnalysisOnTimeout, true, \
"Exit or throw assert in EA when it reaches time limit") \
\
notproduct(bool, PrintEscapeAnalysis, false, \ notproduct(bool, PrintEscapeAnalysis, false, \
"Print the results of escape analysis") \ "Print the results of escape analysis") \
\ \
......
...@@ -1084,7 +1084,7 @@ bool ConnectionGraph::complete_connection_graph( ...@@ -1084,7 +1084,7 @@ bool ConnectionGraph::complete_connection_graph(
C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time"); C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time");
C->log()->end_elem(" limit'"); 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())); time.seconds(), iterations, nodes_size(), ptnodes_worklist.length()));
// Possible infinite build_connection_graph loop, // Possible infinite build_connection_graph loop,
// bailout (no changes to ideal graph were made). // bailout (no changes to ideal graph were made).
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册