Camil Demetrescu edited osr-llvm.tex  over 8 years ago

Commit id: 7d70cbab4cf5bb326438decd57dc774d9153e339

deletions | additions      

       

\fi  %\subsection{Example}  In this section we discuss how to implement the OSR approach of \mysection\ref{se:overview} in LLVM. Our discussion is based on an a simple  example that illustrates a profile-driven optimization scenario, where control is dynamically diverted to a faster version if the number of iterations of a base function exceeds a certain threshold. scenario.  The IR code shown in this section has been generated with \osrkit, an LLVM-based library we prototyped to support VM builders with a set of abstractions for OSR instrumentation of IR code. The example we consider consists in is  a simple base function {\tt isord} that checks whether an array of numbers is ordered according to some criterion specified by a comparator, as shown in \myfigure\ref{fi:isord-example}. Our goal is to instrument {\tt isort} with a mechanism that fires an OSR to a faster version if the number of iterations of a base function exceeds a certain threshold.  %To explain how the OSR approach of \mysection\ref{se:overview} can be implemented in LLVM, we consider the simple example of \myfigure\ref{fi:isord-example}. Function {\tt isord} checks whether an array of numbers is ordered according to some criterion specified by a comparator.