this is for holding javascript data
Daniele Cono D'Elia edited case-study.tex
over 8 years ago
Commit id: 39b751b1e76a3932b41ff74468c432ecbf384550
deletions | additions
diff --git a/case-study.tex b/case-study.tex
index 90bf6dc..a4e16d1 100644
--- a/case-study.tex
+++ b/case-study.tex
...
\newcommand{\gOptIR}{$g^{IR}_{opt}$}
\subsection{Generating Optimized Code}
The core of our optimization pipeline is the optimizer module that is responsible for generating optimized code for the running function \gBase\ using contextual information passed by an open-OSR stub. As a first step, the optimizer inspects {\tt val} to resolve the target $f$ of the \feval\ and check whether a previously compiled optimized version of \gBase\ is available from the cache.
\ifdefined \fullver
If not, a new function \gOpt\ is generated by cloning the IIR representation \gIIR\ of \gBase\ into \gOptIIR\ and replacing all the \feval\ calls in the same group of the instrumented one with direct calls to $f$.
\else
If not, a new function \gOpt\ is generated by cloning the IIR representation \gIIR\ of \gBase\ into \gOptIIR\ and replacing all \feval\ calls to $f$ with direct calls.
\fi
As a next step, the optimizer asks the IIR compiler to analyze \gOptIIR\ and generate optimized LLVM IR \gOptIR, also storing the variable map between IIR and IR objects when compiling the direct call corresponding to the \feval\ instruction that triggered the OSR.