RFD: AOT for AArch64 (original) (raw)

Dmitry Chuyko dmitry.chuyko at bell-sw.com
Tue Mar 27 15:08:45 UTC 2018


Andrew, thank you, great work!

On 03/24/2018 09:54 PM, Edward Nevill wrote:

On Sat, 2018-03-24 at 16:09 +0000, Edward Nevill wrote:

On Fri, 2018-03-23 at 18:11 +0000, Andrew Haley wrote:

Looks promising, but I get as far as here and then get Exception in thread "main" jdk.vm.ci.common.JVMCIError: expected VM constant not found: CardTableModRefBS::dirtycard It looks like your patch http://cr.openjdk.java.net/~aph/jaotc/jdk-hs-1/ didn't apply cleanly to tip of http://hg.openjdk.java.net/jdk/hs I tried updating to changeset: 48711:e321560ac819 Thanks Ed, that works for me either. ...........

ed at ubuntu:~/openjdk$ /home/ed/openjdk/hs/build/linux-aarch64-normal-server-release/images/jdk/bin/jaotc -J--module-path=/home/ed/openjdk/graal/sdk/mxbuild/modules/org.graalvm.graalsdk.jar:/home/ed/openjdk/graal/truffle/mxbuild/modules/com.oracle.truffle.truffleapi.jar -J--upgrade-module-path=/home/ed/openjdk/graal/compiler/mxbuild/modules/jdk.internal.vm.compiler.jar Queens.class --output Queens.so Error: Failed compilation: Queens.main([Ljava/lang/String;)V: org.graalvm.compiler.graph.GraalGraphError: org.graalvm.compiler.debug.GraalError: Emitting code to load a metaspace address is not currently supported on aarch64 at node: 287|LoadConstantIndirectly Error: Failed compilation: Queens.print([I)V: org.graalvm.compiler.graph.GraalGraphError: org.graalvm.compiler.debug.GraalError: Emitting code to load a metaspace address is not currently supported on aarch64 at node: 1273|LoadConstantIndirectly Exception in thread "main" java.lang.NoSuchMethodError: jdk.tools.jaotc.aarch64.AArch64ELFMacroAssembler.addressOf(Ljdk/vm/ci/code/Register;)V at jdk.aot/jdk.tools.jaotc.aarch64.AArch64ELFMacroAssembler.getPLTStaticEntryCode(AArch64ELFMacroAssembler.java:68) at jdk.aot/jdk.tools.jaotc.CodeSectionProcessor.addCallStub(CodeSectionProcessor.java:139) at jdk.aot/jdk.tools.jaotc.CodeSectionProcessor.process(CodeSectionProcessor.java:117) at jdk.aot/jdk.tools.jaotc.DataBuilder.prepareData(DataBuilder.java:142) at jdk.aot/jdk.tools.jaotc.Main.run(Main.java:188) at jdk.aot/jdk.tools.jaotc.Main.run(Main.java:101) at jdk.aot/jdk.tools.jaotc.Main.main(Main.java:80)

Is this known/expected? What revision of jdk/hs are you building with? I'd like to see this working. Thanks, Ed. Ed, in case you haven't made it yet:

I manually applied 2 parts of the patch to graal sources from Andrew's repo: http://cr.openjdk.java.net/~aph/jaotc/jdk-hs-1/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64Assembler.java.patch http://cr.openjdk.java.net/~aph/jaotc/jdk-hs-1/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.asm.aarch64/src/org/graalvm/compiler/asm/aarch64/AArch64MacroAssembler.java.patch We use those built modules as a replacement for ones from JDK but the changes are not present in aarch64-branch-overflows.

Now java.base can be AOT'ed on machines we have. In the logs I see a lot (~37k) of failed compilations with a message like following:

Error: Failed compilation: com.sun.crypto.provider.GCMParameters.engineToString()Ljava/lang/String;: org.graalvm.compiler.graph.GraalGraphError: org.graalvm.compiler.debug.GraalError: Emitting code to load an object address is not currently supported on aarch64         at node: 2058|LoadConstantIndirectly

-Dmitry



More information about the hotspot-dev mailing list