Daniele Cono D'Elia edited experim.tex  over 8 years ago

Commit id: 9ab105f0beb3979d69e6da2f94199009594d9cfe

deletions | additions      

       

In this section we present an experimental study of our OSR technique in TinyVM, a proof-of-concept virtual machine based on LLVM's JIT compiler MCJIT. TinyVM supports interactive invocations of functions and it can compile LLVM IR either generated at run-time or loaded from disk. The main design goal behind TinyVM is the creation of an interactive environment for IR manipulation and JIT-compilation of functions: for instance, it allows the user to insert OSR points in loaded functions, run optimization passes on them or display their CFGs, repeatedly invoke a function for a specified amount of times and so on. TinyVM supports dynamic library loading and linking, and comes with a helper component for MCJIT that simplifies tasks such as handling multiple IR modules, symbol resolution in presence of multiple versions of a function, and tracking native code and other machine-level generated object such as Stackmaps.  TinyVM is thus an ideal playground to exercise our OSR technique, and we use it to run performance measurements on  the shootout benchmarks obtained by lowering their test suite, also known as the Computer Language Benchmark Game\cite{shootout}. We generated the IR modules for our experiments with clang, starting from the  C version to LLVM IR through clang. of the suite; the list of benchmarks and their description is reported in Table [...].  \subsection{Setup}