< prev index next >
src/share/vm/opto/compile.cpp
Print this page
*** 1953,1971 ****
set_inlining_progress(false);
set_inlining_incrementally(false);
}
}
! void Compile::inline_incrementally_one(PhaseIterGVN& igvn) {
assert(IncrementalInline, "incremental inlining should be on");
- PhaseGVN* gvn = initial_gvn();
-
- set_inlining_progress(false);
- for_igvn()->clear();
- gvn->replace_with(&igvn);
-
- {
TracePhase tp("incrementalInline_inline", &timers[_t_incrInline_inline]);
int i = 0;
for (; i <_late_inlines.length() && !inlining_progress(); i++) {
CallGenerator* cg = _late_inlines.at(i);
_late_inlines_pos = i+1;
--- 1953,1964 ----
set_inlining_progress(false);
set_inlining_incrementally(false);
}
}
! void Compile::inline_incrementally_one() {
assert(IncrementalInline, "incremental inlining should be on");
TracePhase tp("incrementalInline_inline", &timers[_t_incrInline_inline]);
int i = 0;
for (; i <_late_inlines.length() && !inlining_progress(); i++) {
CallGenerator* cg = _late_inlines.at(i);
_late_inlines_pos = i+1;
*** 1975,1996 ****
int j = 0;
for (; i < _late_inlines.length(); i++, j++) {
_late_inlines.at_put(j, _late_inlines.at(i));
}
_late_inlines.trunc_to(j);
- }
-
- {
- TracePhase tp("incrementalInline_pru", &timers[_t_incrInline_pru]);
- ResourceMark rm;
- PhaseRemoveUseless pru(gvn, for_igvn());
- }
-
- {
- TracePhase tp("incrementalInline_igvn", &timers[_t_incrInline_igvn]);
- igvn = PhaseIterGVN(gvn);
- }
}
// Perform incremental inlining until bound on number of live nodes is reached
void Compile::inline_incrementally(PhaseIterGVN& igvn) {
TracePhase tp("incrementalInline", &timers[_t_incrInline]);
--- 1968,1977 ----
*** 2000,2010 ****
set_inlining_incrementally(true);
set_inlining_progress(true);
uint low_live_nodes = 0;
while(inlining_progress() && _late_inlines.length() > 0) {
-
if (live_nodes() > (uint)LiveNodeCountInliningCutoff) {
if (low_live_nodes < (uint)LiveNodeCountInliningCutoff * 8 / 10) {
TracePhase tp("incrementalInline_ideal", &timers[_t_incrInline_ideal]);
// PhaseIdealLoop is expensive so we only try it once we are
// out of live nodes and we only try it again if the previous
--- 1981,1990 ----
*** 2018,2028 ****
if (live_nodes() > (uint)LiveNodeCountInliningCutoff) {
break;
}
}
! inline_incrementally_one(igvn);
if (failing()) return;
{
TracePhase tp("incrementalInline_igvn", &timers[_t_incrInline_igvn]);
--- 1998,2025 ----
if (live_nodes() > (uint)LiveNodeCountInliningCutoff) {
break;
}
}
! for_igvn()->clear();
! gvn->replace_with(&igvn);
!
! do {
! set_inlining_progress(false);
! inline_incrementally_one();
! } while (!over_inlining_cutoff() && inlining_progress());
!
! {
! TracePhase tp("incrementalInline_pru", &timers[_t_incrInline_pru]);
! ResourceMark rm;
! PhaseRemoveUseless pru(gvn, for_igvn());
! }
!
! {
! TracePhase tp("incrementalInline_igvn", &timers[_t_incrInline_igvn]);
! igvn = PhaseIterGVN(gvn);
! }
if (failing()) return;
{
TracePhase tp("incrementalInline_igvn", &timers[_t_incrInline_igvn]);
< prev index next >