Mercurial > hg > graal-jvmci-8
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; |