BEAMJIT: a just-in-time compiling runtime for Erlang
Number of Authors: 2
2014 (English)Conference paper (Refereed)
BEAMJIT is a tracing just-in-time compiling runtime for the Erlang programming language. The core parts of BEAMJIT are synthesized from the C source code of BEAM, the reference Erlang abstract machine. The source code for BEAM's instructions is extracted automatically from BEAM's emulator loop. A tracing version of the abstract machine, as well as a code generator are synthesized. BEAMJIT uses the LLVM toolkit for optimization and native code emission. The automatic synthesis process greatly reduces the amount of manual work required to maintain a just-in-time compiler as it automatically tracks the BEAM system. The performance is evaluated with HiPE's, the Erlang ahead-of-time native compiler, benchmark suite. For most benchmarks BEAMJIT delivers a performance improvement compared to BEAM, although in some cases, with known causes, it fails to deliver a performance boost. BEAMJIT does not yet match the performance of HiPE mainly because it does not yet implement Erlang specific optimizations such as boxing/unboxing elimination and a deep understanding of BIFs. Despite this BEAMJIT, for some benchmarks, reduces the runtime with up to 40\%.
Place, publisher, year, edition, pages
Computer and Information Science
IdentifiersURN: urn:nbn:se:ri:diva-24378DOI: 10.1145/2633448.2633450OAI: oai:DiVA.org:ri-24378DiVA: diva2:1043459
The Thirteenth ACM SIGPLAN Workshop on Erlang