this is for holding javascript data
Daniele Cono D'Elia edited case-study.tex
over 8 years ago
Commit id: 451559320b8e44c9c083c934bcdae5b3751152ce
deletions | additions
diff --git a/case-study.tex b/case-study.tex
index b9b4b2f..f0dafa7 100644
--- a/case-study.tex
+++ b/case-study.tex
...
\begin{enumerate}
\item An analysis pass to identify optimization opportunities for \feval\ instructions in the IIR of a function
\item An extension for the IIR compiler to track the correspondence between IIR and IR objects at \feval\ sites
\item An inserter component to insert
open OSR points in the IR for IIR locations annotated during the analysis pass
\item An optimizer module triggered at OSR points, which in turn is made of:
\ifdefined \noauthorea
\begin{enumerate}[noitemsep]
...
We integrated our analysis pass in McVM's analysis manager. In particular, we group \feval\ instructions whose first argument is reached by the same definition, and for each group we mark for instrumentation only instructions not dominated by others, so that the function can be optimized as early as possible at run-time. The analysis pass is also able to determine whether the value of the argument can change across two executions of the same \feval\ instruction, thus discriminating when a run-time guard must be inserted during the run-time optimization phase.
When the IIR compiler processes an annotated \feval\ instruction, it
stores in the metadata keeps track of the
function version being compiled the current variable map (i.e., a map between IIR and IR objects), the {\tt llvm::BasicBlock*} created for the \feval\ and the {\tt llvm::Value*} object
corresponding to for the first argument
for of the \feval. The last two objects are used by the inserter component as
source label basic block and {\tt val} argument for
inserting an the open OSR
point. The open-OSR stub will in turn invoke stub, which invokes the
callback optimizer component we are about to present.
\newcommand{\gbase}{$g$}
\newcommand{\gOpt}{$g_{opt}$}