comparison src/share/vm/opto/compile.cpp @ 253:b0fe4deeb9fb

6726999: nsk/stress/jck12a/jck12a010 assert(n != null,"Bad immediate dominator info.") Summary: Escape Analysis fixes. Reviewed-by: never, rasbold
author kvn
date Mon, 28 Jul 2008 17:12:52 -0700
parents 02a35ad4adf8
children c3e045194476
comparison
equal deleted inserted replaced
252:be7facf71163 253:b0fe4deeb9fb
583 NOT_PRODUCT( verify_graph_edges(); ) 583 NOT_PRODUCT( verify_graph_edges(); )
584 584
585 // Perform escape analysis 585 // Perform escape analysis
586 if (_do_escape_analysis && ConnectionGraph::has_candidates(this)) { 586 if (_do_escape_analysis && ConnectionGraph::has_candidates(this)) {
587 TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, true); 587 TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, true);
588 // Add ConP#NULL and ConN#NULL nodes before ConnectionGraph construction.
589 PhaseGVN* igvn = initial_gvn();
590 Node* oop_null = igvn->zerocon(T_OBJECT);
591 Node* noop_null = igvn->zerocon(T_NARROWOOP);
588 592
589 _congraph = new(comp_arena()) ConnectionGraph(this); 593 _congraph = new(comp_arena()) ConnectionGraph(this);
590 bool has_non_escaping_obj = _congraph->compute_escape(); 594 bool has_non_escaping_obj = _congraph->compute_escape();
591 595
592 #ifndef PRODUCT 596 #ifndef PRODUCT
593 if (PrintEscapeAnalysis) { 597 if (PrintEscapeAnalysis) {
594 _congraph->dump(); 598 _congraph->dump();
595 } 599 }
596 #endif 600 #endif
601 // Cleanup.
602 if (oop_null->outcnt() == 0)
603 igvn->hash_delete(oop_null);
604 if (noop_null->outcnt() == 0)
605 igvn->hash_delete(noop_null);
606
597 if (!has_non_escaping_obj) { 607 if (!has_non_escaping_obj) {
598 _congraph = NULL; 608 _congraph = NULL;
599 } 609 }
600 610
601 if (failing()) return; 611 if (failing()) return;