RFR: 8355003: Implement Ahead-of-Time Method Profiling [v13]
Chris Plummer
cjplummer at openjdk.org
Tue May 6 18:51:18 UTC 2025
On Tue, 6 May 2025 06:31:43 GMT, Igor Veresov <iveresov at openjdk.org> wrote:
>> Improve warm-up time by making profile data from a previous run of an application instantly available, when the HotSpot Java Virtual Machine starts. Specifically, enhance the [AOT cache](https://openjdk.org/jeps/483) to store method execution profiles from training runs, reducing profiling delays in subsequent production runs.
>>
>> More details in the JEP: https://bugs.openjdk.org/browse/JDK-8325147
>
> Igor Veresov has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 43 commits:
>
> - Merge branch 'master' into pp2
> - Fix compile
> - Fix additional issues
> - Make sure command line flags that affect MDO layout are consistent
> - Fix semantics change from the previous commit
> - Port 8355915: [leyden] Crash in MDO clearing the unloaded array type
> - Fix flag behavior
> - Fix log tags
> - Remove the proxy class counter
> - Address review comments part 2
> - ... and 33 more: https://git.openjdk.org/jdk/compare/e09d2e27...7d22a42a
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/memory/FileMapInfo.java line 129:
> 127: metadataTypeArray[5] = db.lookupType("InstanceStackChunkKlass");
> 128: metadataTypeArray[6] = db.lookupType("Method");
> 129: metadataTypeArray[9] = db.lookupType("MethodData");
It looks like MethodData inheriting from Metadata is not a new change, but has always been the case. I'm surprised this didn't cause any test failures before your changes. Did you end up with test failures after your changes?
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/Threads.java line 154:
> 152: if (!VM.getVM().isCore()) {
> 153: virtualConstructor.addMapping("CompilerThread", CompilerThread.class);
> 154: virtualConstructor.addMapping("TrainingReplayThread", TrainingReplayThread.class);
The new SA TrainingReplayThread class is not needed since it only overrides isHiddenFromExternalView() to return true. You can instead use HiddenJavaThread.class here.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24886#discussion_r2076064357
PR Review Comment: https://git.openjdk.org/jdk/pull/24886#discussion_r2076058595
More information about the hotspot-runtime-dev
mailing list