diff src/share/vm/opto/compile.cpp @ 245:4a4c365f777d

Merge
author kvn
date Fri, 11 Jul 2008 12:19:29 -0700
parents 9c2ecc2ffb12 524eca34ea76
children 02a35ad4adf8
line wrap: on
line diff
--- a/src/share/vm/opto/compile.cpp	Fri Jul 11 01:14:44 2008 -0700
+++ b/src/share/vm/opto/compile.cpp	Fri Jul 11 12:19:29 2008 -0700
@@ -583,18 +583,22 @@
   NOT_PRODUCT( verify_graph_edges(); )
 
   // Perform escape analysis
-  if (_do_escape_analysis)
-    _congraph = new ConnectionGraph(this);
-  if (_congraph != NULL) {
-    NOT_PRODUCT( TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, TimeCompiler); )
-    _congraph->compute_escape();
-    if (failing())  return;
+  if (_do_escape_analysis && ConnectionGraph::has_candidates(this)) {
+    TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, true);
+
+    _congraph = new(comp_arena()) ConnectionGraph(this);
+    bool has_non_escaping_obj = _congraph->compute_escape();
 
 #ifndef PRODUCT
     if (PrintEscapeAnalysis) {
       _congraph->dump();
     }
 #endif
+    if (!has_non_escaping_obj) {
+      _congraph = NULL;
+    }
+
+    if (failing())  return;
   }
   // Now optimize
   Optimize();