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

Commit id: 07c408c2d44d09e19b1e0c6ae25b80c788f62a59

deletions | additions      

       

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 keeps track of 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 for the first argument of the \feval. The last two objects are used by the inserter component as basic block and {\tt val} argument for the open OSR open-OSR  stub, which invokes the optimizer component we are about to present. \newcommand{\gbase}{$g$}  \newcommand{\gOpt}{$g_{opt}$}