src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8129847-9 Sdiff src/share/vm/opto

src/share/vm/opto/compile.cpp

Print this page




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) {


src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File