-
Enhancement
-
Resolution: Fixed
-
P4
-
11, 17, 18
-
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);
}