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

Commit id: 1d2e598eb47a7340847c53dc18680fb2dceb4575

deletions | additions      

       

\paragraph{Early approaches}  OSR has been pioneered in the SELF language\cite{holzle1992self} to enable source-level debugging of optimized code, which required deoptimizing the code back to the original version. To reconstruct the source-level state, the compiler generates {\em scope descriptors} recording for each scope the locations or values of its arguments and locals. Execution can be interrupted only at certain interrupt points (i.e., method prologues and backward branches in loops) where its state is guaranteed to be consistent, allowing optimizations between interrupt points. It is worth mentioning also the {\em deferred compilation} mechanism\cite{chambers1991self} implemented in SELF for branches that are unlikely to occur at run-time: the system generates a stub which invokes the compiler to generate a code object that can reuse the stack frame of the original code.  \paragraph{OSR in Java VMs}  The increasing diffusion of the Java language has drawn a lot of attention in the implementation of OSR techniques, as bytecode interpreters began to work along with JIT compilers [...]  \cite{fink2003design,detlefs2001method,soman2006efficient,lameed2013modular,steiner2007adaptive,chambers1992design}