- 
    Type:
Enhancement
 - 
    Resolution: Fixed
 - 
    Priority:
  P4                     
     - 
    Affects Version/s: 11, 17, 18
 - 
    Component/s: hotspot
 
- 
        b23
 
| Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build | 
|---|---|---|---|---|---|---|
| JDK-8279001 | 17.0.3 | Aleksey Shipilev | P4 | Resolved | Fixed | b01 | 
                    The prolog in BytecodeInterpreter is hairy due to early initialization of interpreter state. Previous rewrites make it mostly redundant, and we can now simplify it.
This also implicitly fixes a initialization bug. If JvmtiExport::can_post_interpreter_events() changes at runtime, we will call into the uninitialized version:
// Call the interpreter
if (JvmtiExport::can_post_interpreter_events()) {
BytecodeInterpreter::run<true>(istate);
} else {
BytecodeInterpreter::run<false>(istate);
}
This also implicitly fixes a initialization bug. If JvmtiExport::can_post_interpreter_events() changes at runtime, we will call into the uninitialized version:
// Call the interpreter
if (JvmtiExport::can_post_interpreter_events()) {
BytecodeInterpreter::run<true>(istate);
} else {
BytecodeInterpreter::run<false>(istate);
}