[aarch64-port-dev ] RFD: AOT for AArch64
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::dirty_card
>>
> 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.graal_sdk.jar:/home/ed/openjdk/graal/truffle/mxbuild/modules/com.oracle.truffle.truffle_api.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 aarch64-port-dev
mailing list