8243996: Remove hardcoded field offsets from HotSpot

Reviewed-by: jrose, coleenp, dholmes, fparain
This commit is contained in:
Erik Österlund 2020-05-20 09:31:38 +00:00
parent c3e3459027
commit 6508c5a38d
14 changed files with 109 additions and 114 deletions

View file

@ -113,9 +113,22 @@ CodeletMark::~CodeletMark() {
*_masm = NULL;
}
// The reason that interpreter initialization is split into two parts is that the first part
// needs to run before methods are loaded (which with CDS implies linked also), and the other
// part needs to run after. The reason is that when methods are loaded (with CDS) or linked
// (without CDS), the i2c adapters are generated that assert we are currently in the interpreter.
// Asserting that requires knowledge about where the interpreter is in memory. Therefore,
// establishing the interpreter address must be done before methods are loaded. However,
// we would like to actually generate the interpreter after methods are loaded. That allows
// us to remove otherwise hardcoded offsets regarding fields that are needed in the interpreter
// code. This leads to a split if 1. reserving the memory for the interpreter, 2. loading methods
// and 3. generating the interpreter.
void interpreter_init_stub() {
Interpreter::initialize_stub();
}
void interpreter_init() {
Interpreter::initialize();
void interpreter_init_code() {
Interpreter::initialize_code();
#ifndef PRODUCT
if (TraceBytecodes) BytecodeTracer::set_closure(BytecodeTracer::std_closure());
#endif // PRODUCT