On Thu, 17 Apr 2025 19:11:47 GMT, Vladimir Kozlov <k...@openjdk.org> wrote:

> [JEP 483](https://bugs.openjdk.org/browse/JDK-8315737) preserves class 
> information in AOT cache which helps Java startup performance.
> 
> We should also preserve adapters (i2c, c2i) to further improve performance of 
> class linking where adapters are generated.
> 
> Short running Java application can see several percents improvement. I got 6% 
> improvement when ran `HelloWorld.java` on Linux-x64 Ice Lake CPU (2.5Ghz):
> 
> 
> (perf stat -r 100 java -XX:AOTCache=app.aotcache -cp hello.jar HelloWorld > 
> /dev/null) 2>&1 | grep elapsed
>          0.0299401 +- 0.0000504 seconds time elapsed  ( +-  0.17% )
> 
> (perf stat -r 100 java -XX:AOTCache=app.aotcache 
> -XX:+UnlockDiagnosticVMOptions -XX:-AOTAdapterCaching -cp hello.jar 
> HelloWorld > /dev/null) 2>&1 | grep elapsed
>          0.0318654 +- 0.0000535 seconds time elapsed  ( +-  0.17% )
> 
> 
> New diagnostic flags are introduced (use `-XX:+UnlockDiagnosticVMOptions` to 
> unlock them):
> 
> 
> -XX:+AOTAdapterCaching  - Enable or disable saving and restoring i2c2i 
> adapters
> -XX:AOTCodeMaxSize=10*M - buffer size in bytes for AOT code caching
> -XX:+AbortVMOnAOTCodeFailure - Abort VM on the first occurrence of AOT code 
> caching failure
> 
> By default `AOTAdapterCaching` is `false` and enabled ergonomically when 
> `-XX:AOTCache` is specified.
> Specifying this flag without using `AOTCache` will cause error during VM 
> initialization:
> 
> 
> java -XX:+UnlockDiagnosticVMOptions -XX:+AOTAdapterCaching -cp hello.jar 
> HelloWorld
> Error occurred during initialization of VM
> AOTCache must be specified when using AOT code caching
> 
> 
> To use AOT adapters follow process described in JEP 483:
> 
> 
> java -XX:AOTMode=record -XX:AOTConfiguration=app.aotconf -cp app.jar App
> java -XX:AOTMode=create -XX:AOTConfiguration=app.aotconf -XX:AOTCache=app.aot 
> -cp app.jar
> java -XX:AOTCache=app.aot -cp app.jar App
> 
> 
> There are several new UL flag combinations to trace the AOT code caching 
> process:
> 
> 
> -Xlog:aot+codecache+init -Xlog:aot+codecache+exit -Xlog:aot+codecache+stubs
> 
> 
> @ashu-mehra is main author of changes. He implemented adapters caching.
> I did main framework (`AOTCodeCache` class) for saving and loading AOT code.
> 
> Tested tier1-6,10, which includes tests with `AOTClassLinking` enabled. Also 
> Xcomp,stress and JCK.

@vnkozlov I forgot to remove `AOTCodeSection` from `code/aotCodeCache.hpp` when 
I refactored the APIs. This struct is no longer used. Can you please remove it.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/24740#issuecomment-2814619954

Reply via email to