Camil Demetrescu edited approach.tex  over 8 years ago

Commit id: ba775103e9d6ff348f8f2aea7e15b601f522e5bd

deletions | additions      

       

Consider the generic OSR scenario shown Figure~\ref{fi:osr-dynamics}. A base function \textsf{f} is executed and it can either terminate normally (dashed lines), or an OSR event may transfer control to a variant \textsf{f'}. The decision of whether an OSR should be fired at a given point \textsf{L} is based on an {\em OSR condition}. A typical example is a guard testing whether a speculative function \textsf{f} has become unsafe and a fallback to a safe version \textsf{f'} is in order. Another example is a profile counter reaching a certain hotness threshold, which indicates that \textsf{f} is taking longer than expected and is worth optimizing.  A classical Classical  OSR implementation approach consists of manipulating the state of the program at machine code level, e.g., by adjusting implementations adjust  the stack so that execution can continue in \textsf{f'} with the current frame \cite{}. This requires manipulating the program at machine code level and is highly ABI- and compiler-dependent.  Asubstantially  simpler approach approach, which we follow in this paper,  consists of creating a new frame, rather that modifying the current one. This approach was used, e.g., in \cite{}.  The approach we use to support frame every time an  OSRtransitions  is to perform fired, essentially regarding an OSR transition as  a function call \cite{}.  %\ref{fi:overview-osr-final}