[9] RFR(L) 8166413: Integrate VM part of AOT changes
Volker Simonis
volker.simonis at gmail.com
Thu Oct 27 16:42:56 UTC 2016
Hi,
first of all I had some problems importing the patch from the webrev
because of this sequence:
--- old/./.hgignore 2016-10-26 14:56:22.000000000 -0700
+++ new/./.hgignore 2016-10-26 14:56:22.000000000 -0700
@@ -24,3 +24,19 @@
^test/compiler/jvmci/\w[\w\.]*/.*\.iml
^test/compiler/jvmci/\w[\w\.]*/nbproject
The error (when using hg qpush -v) was:
applying 8166413_AOT.patch
path './.hgignore' is inside nested repo '.'
committing changelog
patch failed, rejects left in working directory
errors during apply, please fix and qrefresh 8166413_AOT.patch
I don't know how it was generated, but I could easily fix it by
replacing the above sequence by:
--- old/.hgignore 2016-10-26 14:56:22.000000000 -0700
+++ new/.hgignore 2016-10-26 14:56:22.000000000 -0700
Besides that, it would be great if you could integrate the followinf
ppc/s390 specific changes which are required to keep the corresponding
ports building:
http://cr.openjdk.java.net/~simonis/webrevs/2016/8166413_ppc_s390_addon/
Thanks,
Volker
On Thu, Oct 27, 2016 at 3:15 AM, Vladimir Kozlov
<vladimir.kozlov at oracle.com> wrote:
> AOT JEP:
> https://bugs.openjdk.java.net/browse/JDK-8166089
> Subtask:
> https://bugs.openjdk.java.net/browse/JDK-8166415
> Webrev:
> http://cr.openjdk.java.net/~kvn/aot/hs.webrev/
>
> Please, review Hotspot VM part of AOT changes.
>
> Only Linux/x64 platform is supported. 'jaotc' and AOT part of Hotspot will
> be build only on Linux/x64.
>
> AOT code is NOT linked during AOT libraries load as it happens with normal
> .so libraries. AOT code entry points are not exposed (not global) in AOT
> libraries. Only class data has global labels which we look for with
> dlsym(klass_name).
>
> AOT-compiled code in AOT libraries is treated by JVM as *extension* of
> existing CodeCache. When a java class is loaded JVM looks if corresponding
> AOT-compiled methods exist in loaded AOT libraries and add links to them
> from java methods descriptors (we have new field Method::_aot_code).
> AOT-compiled code follows the same invocation/deoptimization/unloading rules
> as normal JIT-compiled code.
>
> Calls in AOT code use the same methods resolution runtime code as calls in
> JITed code. The difference is call's destination address is loaded
> indirectly because we can't patch AOT code - it is immutable (to share
> between multiple JVM instances).
>
> Classes and Strings referenced in AOT code are resolved lazily by calling
> into runtime. All mutable pointers (oops (mostly strings), metadata) are
> stored and modified in a separate mutable memory (GOT cells) - they are not
> embedded into AOT code.
>
> Changes includes klass fingerprint generation since we need it to find
> correct klass data in loaded AOT libraries.
>
> Thanks,
> Vladimir
More information about the hotspot-dev
mailing list