6674588: (Escape Analysis) Improve Escape Analysis code

Current EA code has several problems which have to be fixed.

Reviewed-by: jrose, sgoldman
This commit is contained in:
Vladimir Kozlov 2008-03-14 15:26:33 -07:00
parent 30dc0edfc8
commit fc0117cb9a
12 changed files with 1352 additions and 523 deletions

View file

@ -407,11 +407,6 @@ uint Compile::scratch_emit_size(const Node* n) {
return buf.code_size();
}
void Compile::record_for_escape_analysis(Node* n) {
if (_congraph != NULL)
_congraph->record_for_escape_analysis(n);
}
// ============================================================================
//------------------------------Compile standard-------------------------------
@ -494,9 +489,6 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
PhaseGVN gvn(node_arena(), estimated_size);
set_initial_gvn(&gvn);
if (_do_escape_analysis)
_congraph = new ConnectionGraph(this);
{ // Scope for timing the parser
TracePhase t3("parse", &_t_parser, true);
@ -581,6 +573,8 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
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();