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

Commit id: f9ab74a9fa9683cfb676570088acee44aed3492b

deletions | additions      

       

\item or, compensation code is required to reconstruct its value before jumping to the block.  \end{itemize}  \noindent  In fact, since the type inference engine yields more accurate results for $f^{IIR}_{opt}$ compared to $f^{IIR}$, the IIR compiler can in turn generate efficient specialized IR code for representing and manipulating IIR variables, and compensation code is typically required to perform unboxing unbox  or downcasting on downcast some of  the live values passed at the OSR point. 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. Once a state mapping object has been constructed, the optimizer calls our OSR library to generate the continuation function for the OSR transition and eventually compiles it through MCJIT. it.  A pointer to the compiled function is stored in the code cache and returned to the stub, which invokes it through an indirect call passing the live state saved at the OSR point. \subsection{Experimental results} Results}  Wehave  evaluated the effectiveness of our technique on four benchmarks, namely {\tt odeEuler}, {\tt odeMidpt}, {\tt odeRK4}, and {\tt sim\_anl}. The first three benchmarks solve an ODE for heat treating simulation using the Euler, midpoint, and Range-Kutta method, respectively; the last benchmark minimizes the six-hump camelback function with the method of simulated annealing. We report the speed-ups enabled by our technique in Table~\ref{tab:feval}, using the running times for McVM's \feval\ default dispatcher as baseline. As the dispatcher typically JIT-compiles the invoked function, we also analyzed running times when the dispatcher calls a previously compiled function. In the last column, we report speed-ups from a modified version of the benchmarks in which each \feval\ call is replaced by hand with a direct call to the function in use for the specific benchmark.   \begin{table}  \begin{small}