this is for holding javascript data
Camil Demetrescu edited osr-llvm.tex
over 8 years ago
Commit id: ebd708148f16386b99063e3ecad97afa74ce1fb1
deletions | additions
diff --git a/osr-llvm.tex b/osr-llvm.tex
index 400f028..83cd233 100644
--- a/osr-llvm.tex
+++ b/osr-llvm.tex
...
%\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 a simple example that illustrates a profile-driven optimization scenario. We start from a simple base function ({\tt isord}) that checks whether an array of numbers is ordered according to some criterion specified by a comparator (see \myfigure\ref{fi:isord-example}). Our goal is to instrument {\tt isord} so that, whenever the number of loop iterations exceeds a certain threshold, control is dynamically diverted to a faster version generated on the fly by inlining the comparator.
The IR code shown in this section has been generated with \clang\ and instrumented with \osrkit, a library we prototyped to help VM builders implement OSR in LLVM\footnote{Virtual register names and labels in the LLVM-produced IR code shown in this paper have been refactored to make the code more readable.}. \osrkit\ provides a number of useful abstractions that include open and resolved OSR instrumentation of base functions, liveness analysis, generation of OSR continuation functions, and mapping of LLVM values between different versions of a program along with compensation code
generation. generation\footnote{\osrkit\ is included in the accompanying artifact.}.
%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.