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


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