this is for holding javascript data
dcdelia
over 8 years ago
Commit id: 27e78694246d7476bfa85109256e3395940262f2
deletions | additions
diff --git a/eval-new-approach.tex b/eval-new-approach.tex
index 53c6d3c..02bda19 100644
--- a/eval-new-approach.tex
+++ b/eval-new-approach.tex
...
\else
As a next step, the optimizer asks the IIR compiler to lower \fOptIIR\ to \fOptIR. During the process, the compiler stores the variable map between IIR and IR objects at the direct call replacing the \feval\ instruction that triggered the OSR.
Using this map and the one stored during the lowering of \fIIR, the optimizer constructs a state mapping between \fIR\ and \fOptIR. In particular, for each value in \fOptIR\ live at the continuation block we determine
whether:
%\begin{enumerate}[label={(\alph*)}, noitemsep, partopsep=0.5ex, topsep=0.5ex]
\begin{itemize}[noitemsep, partopsep=0.5ex, topsep=0.5ex]
\item whether we can assign to it a live value passed at the OSR
point directly,
\item point, or a compensation code is required to set its value.
\end{itemize}
%\end{enumerate}
\fi
\noindent Notice
that that, since the type inference engine yields more accurate results for \fOptIIR\ compared to \fIIR, the IIR compiler can in turn generate efficient specialized IR code for representing and manipulating IIR variables, and compensation code is typically required to unbox or downcast some of the live values passed at the OSR point.
\ifdefined \fullver
Compensation code might also be required to materialize an IR object for an IIR variable that were previously accessed through get/set methods from the environment. %TODO
\fi