mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8243996: Remove hardcoded field offsets from HotSpot
Reviewed-by: jrose, coleenp, dholmes, fparain
This commit is contained in:
parent
c3e3459027
commit
6508c5a38d
14 changed files with 109 additions and 114 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue