In Proceedings

Bringing Low-Level Languages to the JVM: Efficient Execution of LLVM IR on Truffle
October 2016

Although the Java platform has been used as a multi-language platform, most of the low-level languages (such as C, Fortran, and C++) cannot be executed efficiently on the JVM. We propose Sulong, a system that can execute LLVM- based languages on the JVM. By targeting LLVM IR, Sulong is able to execute C, Fortran, and other languages that can be compiled to LLVM IR. Sulong combines LLVM’s static optimizations with dynamic compilation to reach a peak performance that is near to the performance achievable with static compilers. For C benchmarks, Sulong’s peak runtime performance is on average 1.39x slower (0.79x to 2.45x) compared to the performance of executables compiled by Clang O3. For Fortran benchmarks, Sulong is 2.63 x slower (1.43x to 4.96x) than the performance of executables com- piled by GCC O3. This low overhead makes Sulong an alter-native to Java’s native function interfaces. More importantly, it also allows other JVM language implementations to use Sulong for implementing their native interfaces.

Authors: Manuel Rigger, Matthias Grimmer, Christian Wimmer, Thomas Wuerthinger, Hanspeter Moessenboeck

Venue: VMIL workshop at the SPLASH conference, October 31, Amsterdam:


Hardware and Software, Engineered to Work Together