2139 2140 if (AlwaysIncrementalInline) { 2141 inline_incrementally(igvn); 2142 } 2143 2144 print_method(PHASE_INCREMENTAL_BOXING_INLINE, 2); 2145 2146 if (failing()) return; 2147 } 2148 2149 // Remove the speculative part of types and clean up the graph from 2150 // the extra CastPP nodes whose only purpose is to carry them. Do 2151 // that early so that optimizations are not disrupted by the extra 2152 // CastPP nodes. 2153 remove_speculative_types(igvn); 2154 2155 // No more new expensive nodes will be added to the list from here 2156 // so keep only the actual candidates for optimizations. 2157 cleanup_expensive_nodes(igvn); 2158 2159 // Perform escape analysis 2160 if (_do_escape_analysis && ConnectionGraph::has_candidates(this)) { 2161 if (has_loops()) { 2162 // Cleanup graph (remove dead nodes). 2163 TracePhase tp("idealLoop", &timers[_t_idealLoop]); 2164 PhaseIdealLoop ideal_loop( igvn, false, true ); 2165 if (major_progress()) print_method(PHASE_PHASEIDEAL_BEFORE_EA, 2); 2166 if (failing()) return; 2167 } 2168 ConnectionGraph::do_analysis(this, &igvn); 2169 2170 if (failing()) return; 2171 2172 // Optimize out fields loads from scalar replaceable allocations. 2173 igvn.optimize(); 2174 print_method(PHASE_ITER_GVN_AFTER_EA, 2); 2175 2176 if (failing()) return; 2177 2178 if (congraph() != NULL && macro_count() > 0) { | 2139 2140 if (AlwaysIncrementalInline) { 2141 inline_incrementally(igvn); 2142 } 2143 2144 print_method(PHASE_INCREMENTAL_BOXING_INLINE, 2); 2145 2146 if (failing()) return; 2147 } 2148 2149 // Remove the speculative part of types and clean up the graph from 2150 // the extra CastPP nodes whose only purpose is to carry them. Do 2151 // that early so that optimizations are not disrupted by the extra 2152 // CastPP nodes. 2153 remove_speculative_types(igvn); 2154 2155 // No more new expensive nodes will be added to the list from here 2156 // so keep only the actual candidates for optimizations. 2157 cleanup_expensive_nodes(igvn); 2158 2159 if (!failing() && RenumberLiveNodes && live_nodes() + NodeLimitFudgeFactor < unique()) { 2160 Compile::TracePhase tp("", &timers[_t_renumberLive]); 2161 initial_gvn()->replace_with(&igvn); 2162 for_igvn()->clear(); 2163 Unique_Node_List new_worklist(C->comp_arena()); 2164 { 2165 ResourceMark rm; 2166 PhaseRenumberLive prl = PhaseRenumberLive(initial_gvn(), for_igvn(), &new_worklist); 2167 } 2168 set_for_igvn(&new_worklist); 2169 igvn = PhaseIterGVN(initial_gvn()); 2170 igvn.optimize(); 2171 } 2172 2173 // Perform escape analysis 2174 if (_do_escape_analysis && ConnectionGraph::has_candidates(this)) { 2175 if (has_loops()) { 2176 // Cleanup graph (remove dead nodes). 2177 TracePhase tp("idealLoop", &timers[_t_idealLoop]); 2178 PhaseIdealLoop ideal_loop( igvn, false, true ); 2179 if (major_progress()) print_method(PHASE_PHASEIDEAL_BEFORE_EA, 2); 2180 if (failing()) return; 2181 } 2182 ConnectionGraph::do_analysis(this, &igvn); 2183 2184 if (failing()) return; 2185 2186 // Optimize out fields loads from scalar replaceable allocations. 2187 igvn.optimize(); 2188 print_method(PHASE_ITER_GVN_AFTER_EA, 2); 2189 2190 if (failing()) return; 2191 2192 if (congraph() != NULL && macro_count() > 0) { |