< prev index next >

src/hotspot/share/interpreter/invocationCounter.cpp

Print this page
rev 53568 : 8218031: Zero broken after JDK-8217922 (Compiler dead code removal)
Reviewed-by: thartmann, sgehwolf, shade
Contributed-by: Ao Qi <aoqi@loongson.cn>

*** 77,86 **** --- 77,90 ---- // Initialization int InvocationCounter::_init [InvocationCounter::number_of_states]; InvocationCounter::Action InvocationCounter::_action[InvocationCounter::number_of_states]; + #ifdef CC_INTERP + int InvocationCounter::InterpreterInvocationLimit; + int InvocationCounter::InterpreterBackwardBranchLimit; + #endif const char* InvocationCounter::state_as_string(State state) { switch (state) { case wait_for_nothing : return "wait_for_nothing"; case wait_for_compile : return "wait_for_compile";
*** 130,139 **** --- 134,159 ---- void InvocationCounter::reinitialize() { // define states guarantee((int)number_of_states <= (int)state_limit, "adjust number_of_state_bits"); def(wait_for_nothing, 0, do_nothing); def(wait_for_compile, 0, do_decay); + + #ifdef CC_INTERP + InterpreterInvocationLimit = CompileThreshold << number_of_noncount_bits; + + // When methodData is collected, the backward branch limit is compared against a + // methodData counter, rather than an InvocationCounter. In the former case, we + // don't need the shift by number_of_noncount_bits, but we do need to adjust + // the factor by which we scale the threshold. + if (ProfileInterpreter) { + InterpreterBackwardBranchLimit = (int)((int64_t)CompileThreshold * (OnStackReplacePercentage - InterpreterProfilePercentage) / 100); + } else { + InterpreterBackwardBranchLimit = (int)(((int64_t)CompileThreshold * OnStackReplacePercentage / 100) << number_of_noncount_bits); + } + + assert(0 <= InterpreterBackwardBranchLimit, "OSR threshold should be non-negative"); + #endif } void invocationCounter_init() { InvocationCounter::reinitialize(); }
< prev index next >