src/share/vm/opto/compile.cpp

changeset 688
b0fe4deeb9fb
parent 682
02a35ad4adf8
child 728
c3e045194476
equal deleted inserted replaced
687:be7facf71163 688: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;

mercurial