src/share/vm/runtime/simpleThresholdPolicy.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File tiered-osr-logic-fix Cdiff src/share/vm/runtime/simpleThresholdPolicy.cpp

src/share/vm/runtime/simpleThresholdPolicy.cpp

Print this page

        

*** 204,218 **** return osr_nm; } // Check if the method can be compiled, change level if necessary void SimpleThresholdPolicy::compile(methodHandle mh, int bci, CompLevel level, TRAPS) { ! // Take the given ceiling into the account. ! // NOTE: You can set it to 1 to get a pure C1 version. ! if ((CompLevel)TieredStopAtLevel < level) { ! level = (CompLevel)TieredStopAtLevel; ! } if (level == CompLevel_none) { return; } // Check if the method can be compiled. If it cannot be compiled with C1, continue profiling // in the interpreter and then compile with C2 (the transition function will request that, --- 204,214 ---- return osr_nm; } // Check if the method can be compiled, change level if necessary void SimpleThresholdPolicy::compile(methodHandle mh, int bci, CompLevel level, TRAPS) { ! assert(level <= TieredStopAtLevel, "Invalid compilation level"); if (level == CompLevel_none) { return; } // Check if the method can be compiled. If it cannot be compiled with C1, continue profiling // in the interpreter and then compile with C2 (the transition function will request that,
*** 225,238 **** return; } if (bci != InvocationEntryBci && mh->is_not_osr_compilable()) { return; } if (PrintTieredEvents) { print_event(COMPILE, mh, mh, bci, level); } - if (!CompileBroker::compilation_is_in_queue(mh, bci)) { submit_compile(mh, bci, level, THREAD); } } // Tell the broker to compile the method --- 221,234 ---- return; } if (bci != InvocationEntryBci && mh->is_not_osr_compilable()) { return; } + if (!CompileBroker::compilation_is_in_queue(mh, bci)) { if (PrintTieredEvents) { print_event(COMPILE, mh, mh, bci, level); } submit_compile(mh, bci, level, THREAD); } } // Tell the broker to compile the method
*** 286,301 **** return false; } // Common transition function. Given a predicate determines if a method should transition to another level. CompLevel SimpleThresholdPolicy::common(Predicate p, methodOop method, CompLevel cur_level) { - if (is_trivial(method)) return CompLevel_simple; - CompLevel next_level = cur_level; int i = method->invocation_count(); int b = method->backedge_count(); switch(cur_level) { case CompLevel_none: // If we were at full profile level, would we switch to full opt? if (common(p, method, CompLevel_full_profile) == CompLevel_full_optimization) { next_level = CompLevel_full_optimization; --- 282,298 ---- return false; } // Common transition function. Given a predicate determines if a method should transition to another level. CompLevel SimpleThresholdPolicy::common(Predicate p, methodOop method, CompLevel cur_level) { CompLevel next_level = cur_level; int i = method->invocation_count(); int b = method->backedge_count(); + if (is_trivial(method)) { + next_level = CompLevel_simple; + } else { switch(cur_level) { case CompLevel_none: // If we were at full profile level, would we switch to full opt? if (common(p, method, CompLevel_full_profile) == CompLevel_full_optimization) { next_level = CompLevel_full_optimization;
*** 319,329 **** } } } break; } ! return next_level; } // Determine if a method should be compiled with a normal entry point at a different level. CompLevel SimpleThresholdPolicy::call_event(methodOop method, CompLevel cur_level) { CompLevel osr_level = MIN2((CompLevel) method->highest_osr_comp_level(), --- 316,327 ---- } } } break; } ! } ! return MIN2(next_level, (CompLevel)TieredStopAtLevel); } // Determine if a method should be compiled with a normal entry point at a different level. CompLevel SimpleThresholdPolicy::call_event(methodOop method, CompLevel cur_level) { CompLevel osr_level = MIN2((CompLevel) method->highest_osr_comp_level(),
src/share/vm/runtime/simpleThresholdPolicy.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File