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 initial_gvn()->replace_with(&igvn); 2161 for_igvn()->clear(); 2162 Unique_Node_List new_worklist(C->comp_arena()); 2163 { 2164 ResourceMark rm; 2165 PhaseRenumberLive prl = PhaseRenumberLive(initial_gvn(), for_igvn(), &new_worklist); 2166 } 2167 set_for_igvn(&new_worklist); 2168 igvn = PhaseIterGVN(initial_gvn()); 2169 igvn.optimize(); 2170 } 2171 2172 // Perform escape analysis 2173 if (_do_escape_analysis && ConnectionGraph::has_candidates(this)) { 2174 if (has_loops()) { 2175 // Cleanup graph (remove dead nodes). 2176 TracePhase tp("idealLoop", &timers[_t_idealLoop]); 2177 PhaseIdealLoop ideal_loop( igvn, false, true ); 2178 if (major_progress()) print_method(PHASE_PHASEIDEAL_BEFORE_EA, 2); 2179 if (failing()) return; 2180 } 2181 ConnectionGraph::do_analysis(this, &igvn); 2182 2183 if (failing()) return; 2184 2185 // Optimize out fields loads from scalar replaceable allocations. 2186 igvn.optimize(); 2187 print_method(PHASE_ITER_GVN_AFTER_EA, 2); 2188 2189 if (failing()) return; 2190 2191 if (congraph() != NULL && macro_count() > 0) { |