src/share/vm/opto/escape.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7163534 Sdiff src/share/vm/opto

src/share/vm/opto/escape.cpp

Print this page




1067           new_edges += find_field_value(field);
1068           // This code may added new edges to phantom_object.
1069           // Need an other cycle to propagate references to phantom_object.
1070         }
1071       }
1072       time.stop();
1073     } else {
1074       new_edges = 0; // Bailout
1075     }
1076   } while (new_edges > 0);
1077 
1078   // Bailout if passed limits.
1079   if ((iterations     >= CG_BUILD_ITER_LIMIT) ||
1080       (time.seconds() >= CG_BUILD_TIME_LIMIT)) {
1081     Compile* C = _compile;
1082     if (C->log() != NULL) {
1083       C->log()->begin_elem("connectionGraph_bailout reason='reached ");
1084       C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time");
1085       C->log()->end_elem(" limit'");
1086     }
1087     assert(false, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
1088            time.seconds(), iterations, nodes_size(), ptnodes_worklist.length()));
1089     // Possible infinite build_connection_graph loop,
1090     // bailout (no changes to ideal graph were made).
1091     return false;
1092   }
1093 #ifdef ASSERT
1094   if (Verbose && PrintEscapeAnalysis) {
1095     tty->print_cr("EA: %d iterations to build connection graph with %d nodes and worklist size %d",
1096                   iterations, nodes_size(), ptnodes_worklist.length());
1097   }
1098 #endif
1099 
1100 #undef CG_BUILD_ITER_LIMIT
1101 #undef CG_BUILD_TIME_LIMIT
1102 
1103   // Find fields initialized by NULL for non-escaping Allocations.
1104   int non_escaped_length = non_escaped_worklist.length();
1105   for (int next = 0; next < non_escaped_length; next++) {
1106     JavaObjectNode* ptn = non_escaped_worklist.at(next);
1107     PointsToNode::EscapeState es = ptn->escape_state();




1067           new_edges += find_field_value(field);
1068           // This code may added new edges to phantom_object.
1069           // Need an other cycle to propagate references to phantom_object.
1070         }
1071       }
1072       time.stop();
1073     } else {
1074       new_edges = 0; // Bailout
1075     }
1076   } while (new_edges > 0);
1077 
1078   // Bailout if passed limits.
1079   if ((iterations     >= CG_BUILD_ITER_LIMIT) ||
1080       (time.seconds() >= CG_BUILD_TIME_LIMIT)) {
1081     Compile* C = _compile;
1082     if (C->log() != NULL) {
1083       C->log()->begin_elem("connectionGraph_bailout reason='reached ");
1084       C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time");
1085       C->log()->end_elem(" limit'");
1086     }
1087     assert(ExitEscapeAnalysisOnTimeout, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
1088            time.seconds(), iterations, nodes_size(), ptnodes_worklist.length()));
1089     // Possible infinite build_connection_graph loop,
1090     // bailout (no changes to ideal graph were made).
1091     return false;
1092   }
1093 #ifdef ASSERT
1094   if (Verbose && PrintEscapeAnalysis) {
1095     tty->print_cr("EA: %d iterations to build connection graph with %d nodes and worklist size %d",
1096                   iterations, nodes_size(), ptnodes_worklist.length());
1097   }
1098 #endif
1099 
1100 #undef CG_BUILD_ITER_LIMIT
1101 #undef CG_BUILD_TIME_LIMIT
1102 
1103   // Find fields initialized by NULL for non-escaping Allocations.
1104   int non_escaped_length = non_escaped_worklist.length();
1105   for (int next = 0; next < non_escaped_length; next++) {
1106     JavaObjectNode* ptn = non_escaped_worklist.at(next);
1107     PointsToNode::EscapeState es = ptn->escape_state();


src/share/vm/opto/escape.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File