RFR: 8243996: Remove hardcoded field offsets from HotSpot
David Holmes
david.holmes at oracle.com
Thu May 14 05:19:36 UTC 2020
Hi Erik,
On 14/05/2020 1:26 am, Erik Österlund wrote:
> Hi,
>
> Let's remove hardcoded field offsets. Main trick to get this done is to
> split interpreter initialization
> into two parts: 1. reserve the interpreter memory, 2. generate the
> interpreter. This allows reserving
> it before loading methods (which generates i2c adapters that assert
> things are "in the interpreter",
> requiring knowledge about its address range), and then load the methods,
> and then generate the interpreter.
> This moving of interpreter code generation until after methods have been
> loaded allows offsets to be
> looked up, needed by code generation. That way, we no longer need to
> hardcode field offsets, which
> makes it less annoying to change the field layout code in the future.
>
> Thanks to Coleen for pre-reviewing this.
>
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8243996
>
> Webrev:
> http://cr.openjdk.java.net/~eosterlund/8243996/webrev.01/
This seems like a good simplification, and allows for future
flexibility. Initialization order changes are always tricky as the
dependencies are not always obvious - there may be logging or error path
related code that eventually assumes the interpreter has been generated
- but we can deal with such issues if they arise.
Generally all seems fine to me - I won't comment on the colour of the
bikeshed. :)
One small comment:
src/hotspot/share/runtime/init.cpp
! void interpreter_init_code(); // after methods loaded
given the later comment:
+ interpreter_init_code(); // after javaClasses_init and before any
method gets linked (not loaded)
should the first comment be expanded to:
void interpreter_init_code(); // after methods loaded, but before
they are linked
?
Also IIUC the parenthetical "(not loaded)" alludes to the currently
incorrect comment:
void invocationCounter_init(); // before any methods loaded
but once you've fixed that there's no context to know what the "(not
loaded)" relates to so it can just be dropped.
Thanks,
David
-----
> Thanks,
> /Erik
More information about the hotspot-dev
mailing list