[oe] OpenJDK-6 ARM Shark LLVM JIT testing

Xerxes Rånby xerxes at zafena.se
Thu Jul 15 13:44:29 UTC 2010


On 2010-07-14 22:43, Marcin Juszkiewicz wrote:
> Dnia środa, 14 lipca 2010 o 19:37:03 Xerxes Rånby napisał(a):
>   
>> Hi all!
>>
>> I have committed some ARM Shark CPU features auto-detection code into
>> oe.dev.
>> http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=1ea15a2cd7317
>> 8c3fbab36b544a6601b1d1c32bf This patch will make OpenJDK use the best ARM
>> CPU features available when generating code using the Shark JIT.
>>     
>   
>> I need your help in order to find and catch the LLVM JIT bugs by testing
>> running Shark and report if
>> LLVM asserts during code generation.
>>     
> LLVM does not supports Thumb - thats hurt. Ubuntu had to disable Shark to get 
> openjdk-6 built for armel.
>
> Regards, 
>   

Hi!
My own testing indicates that it are possible to run a Shark build
compiled on a arm Ubuntu Jaunty system on a thumb2 system such as Ubuntu
Maverick or Lucid.

Have you tested to run the Debian squeeze llvm and openjdk-6-jre-zero
packages on Maverick? It might work.

If you want to build LLVM using the Maverick thumb toolchain then you
have to make sure to compile the LLVM libraries for -marm and possibly
compile the shark libjvm.so as -marm as well and double check that LLVM
actually uses the ARM JIT backend instead of the Thumb backend. LLVM
switches on the Thumb JIT backend by default (at compile time) if it
have autodetected the host system to be a Host: thumb-unknown-linux-gnueabi.

Upstream Ubuntu bugreport:
https://bugs.launchpad.net/llvm/+bug/513735

Upstream LLVM bugreports to implement Thumb JIT support  are:
http://llvm.org/bugs/show_bug.cgi?id=6065  fix so that llvm can be
compiled with a thumb toolchain.
http://llvm.org/bugs/show_bug.cgi?id=6223  - ARM thumb target fails to
JIT tPUSH

A sidenote, LLVM currently supports generating thumb code during static
compilation using llc.

The LLVM Thumb JIT are on a good way to get finished, it currently nows
what instructions it needs to JIT but it dont know how the machinecodes
should look like in memory.
By implementing how the different thumb instructions look in memory
would makes it possible to complete the thumb JIT.

Cheers
Xerxes




More information about the Openembedded-devel mailing list