1709 TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, true); |
1709 TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, true); |
1710 ConnectionGraph::do_analysis(this, &igvn); |
1710 ConnectionGraph::do_analysis(this, &igvn); |
1711 |
1711 |
1712 if (failing()) return; |
1712 if (failing()) return; |
1713 |
1713 |
|
1714 // Optimize out fields loads from scalar replaceable allocations. |
1714 igvn.optimize(); |
1715 igvn.optimize(); |
1715 print_method("Iter GVN after EA", 2); |
1716 print_method("Iter GVN after EA", 2); |
1716 |
1717 |
1717 if (failing()) return; |
1718 if (failing()) return; |
1718 |
1719 |
|
1720 if (congraph() != NULL && macro_count() > 0) { |
|
1721 PhaseMacroExpand mexp(igvn); |
|
1722 mexp.eliminate_macro_nodes(); |
|
1723 igvn.set_delay_transform(false); |
|
1724 |
|
1725 igvn.optimize(); |
|
1726 print_method("Iter GVN after eliminating allocations and locks", 2); |
|
1727 |
|
1728 if (failing()) return; |
|
1729 } |
1719 } |
1730 } |
1720 |
1731 |
1721 // Loop transforms on the ideal graph. Range Check Elimination, |
1732 // Loop transforms on the ideal graph. Range Check Elimination, |
1722 // peeling, unrolling, etc. |
1733 // peeling, unrolling, etc. |
1723 |
1734 |