dcdelia  over 8 years ago

Commit id: 4f0e9514e73dced1eaf6be72ccf91c1911c9a4b1

deletions | additions      

       

\ifdefined \fullver  As a next step, the optimizer asks the IIR compiler to process \fOptIIR\ and generate optimized LLVM IR \fOptIR, also storing the variable map between IIR and IR objects when compiling the direct call corresponding to the \feval\ instruction that triggered the OSR.  This map is essential for the next step, which is constructing a state mapping between \fIR\ to \fOptIR, as it is compared against the corresponding map stored during the lowering of \fBase\ \fIIR\  to determine whether for each value in \fOptIR\ live at the continuation block: \begin{itemize}[noitemsep, partopsep=0.5ex, topsep=0.5ex]  \item an {\tt llvm::Value*} from \fIR\ passed as argument at the OSR point can be used directly  \item or, compensation code is required to reconstruct its value before jumping to the block. 

\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 \fbase, \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 a live {\tt llvm::Value*} from \fIR\ passed at the OSR point can be used directly,