Daniele Cono D'Elia edited case-study.tex  over 8 years ago

Commit id: b02d01ecb15698465c67356213cd180797bf7cbc

deletions | additions      

       

\begin{enumerate}  \item An analysis pass for {\tt feval} instructions in the IIR representation of a function  \item An extension for the IIR compiler to track the correspondence between IIR and IR objects at {\tt feval} calls  \item A helper component to insert OSR points in the IR at IIR locations identified annotated  during the analysis pass \item A callback component invoked at OSR points, which in turn is made of:  \begin{enumerate}  \item A profile-driven IIR generator to replace {\tt feval} calls with direct calls 

\end{enumerate}  \end{enumerate}  The analysis pass is integrated in McVM's analysis manager and groups identifies optimization opportunities for functions containing  {\tt feval} instructions together instructions. A function becomes a candidate for optimization  when their at least one of its {\tt feval} calls is inside a loop. We then group {\tt feval} instructions whose  first argument is reached by the same definition, using reaching definition information already computed by the analysis manager for other previous  optimizations. Grouping instructions allows [...]  The analysis pass is also able to determine whether the value of the argument can change across two executions of the same {\tt feval} instruction, and thus indicate when discriminate whether  a run-time guard should be inserted during the run-time optimization phase. Compared to the OSR-based approach by Lameed and Hendren, our solution is cheaper because the types for the other arguments do not need to be cached or checked: guarded:  as we will see later, the type inference engine will compute the most accurate yet still  sound type information during in  the analysis of the profile-driven generated  IIR where {\tt feval} calls are replaced with direct calls. function.  When the IIR compiler processes