I completed a Ph.D. degree in Computer Science under the supervision of Professor Laurie Hendren of the School of Computer Science, McGill University, Canada. Before joining McGill, I obtained a Master's degree in Computer Science from Concordia University, Canada. While at Concordia, as a member of the Erasmus team, I worked on an implementation of concurrency in a compiler for Erasmus, a process-based language. At McGill, I was a member of the McLab project team. I worked on McVM and its JIT compiler, McJIT.
My research work was on efficient just-in-time compilation of MATLAB-like languages using the LLVM compiler framework . I developed techniques and tools in LLVM for an efficient implementation of the MATLAB language.
I have relocated to the United States. I work at Intel Corporation.
On-stack replacement (OSR) is a technique that allows a virtual machine to interrupt running code during the execution of a function/method, to re-optimize the function on-the-fly using an optimizing JIT compiler, and then to resume the interrupted function at the point and state at which it was interrupted. OSR is particularly useful for programs with potentially long-running loops, as it allows dynamic optimization of those loops as soon as they become hot.
I have designed and developed a tool (named McOSR) that allows JIT compiler developers in LLVM to add on-stack replacement(OSR) to their JITs. OSR is particularly useful for supporting runtime optimizations in JIT compilers for dynamic languages. This is a significant addition to the LLVM JIT as it will help to build more efficient JITs for dynamic languages.
Please see the table below to download the tool. The installation of McOSR is easy. The package contains the source code and a makefile that can be used to build the libmcosr.a library. The package also contains a README that explains how to build the library and run the example included. A manual is also included in the package. The manual contains the instructions to obtain, install and use the system. The manual explains in detail the C++ code used in the example. In particular, it explains how a JIT compiler writer can add OSR to their JIT using McOSR.
Date | Version | Release Notes | Documentaton | Download |
---|---|---|---|---|
27 July 2013 | 1.2 | release-notes-1.2 | documentation | libmcosr.1.2.tar.gz |
23 November 2012 | 1.1 | release-notes-1.1 | documentation | libmcosr.1.1.tar.gz |
The package now contains an example that shows how McOSR has been used to support dynamic inlining of hot call sites in long-running loops. For more information and support, please contact me at: nlamee AT cs mcgill ca.