dcdelia Merge branch 'master' of https://github.com/camild/article-llvm-osr none  over 8 years ago

Commit id: 0e9cfc949b64853e93d7ed5a74d751157d756114

deletions | additions      

       

\paragraph{OSR Machinery Generation.}  We now discuss the overhead of the \osrkit\ library for inserting OSR machinery in the IR of a function. \mytable\ref{tab:instrTime} reports for each benchmark the number of IR instructions in the instrumented function, the number of live values to transfer and the time spent in the IR manipulation. Locations for OSR points are chosen as in the experiments about code quality, and the target function is a clone of the source function.  For open OSR points, we report the time spent in inserting the OSR point in the function and in generating the stub; both operations do not depend on the size of the function. For resolved OSR points, we report the time spent in inserting the OSR point and in generating the continuation \fosrto\  function. Not surprisingly, constructing a continuation function takes longer than the other operations (i.e., up to 1 ms vs. 20-40 us), as it involves cloning and manipulating the body of the target function and thus depends on its size: \mytable\ref{tab:instrTime} thus comes with an additional column in which time is normalized against the number of IR instructions in the target.         

\label{fig:isordx86-64} OSR-instrumented functions {\tt isordfrom} (base) and {\tt isordto} (faster continuation) after IR to x86-64 IR-to-x86-64  lowering in LLVM. %For the sake of comparison with the native code that would be generated for the original non-OSR versions, Additions resulting from the IR instrumentation are in grey, while removals are struck-through.