deletions | additions
diff --git a/article.tex b/article.tex
index 3448837..c128f37 100644
--- a/article.tex
+++ b/article.tex
...
\usepackage{balance}
%%%%%%%%
\iffalse
\usepackage[firstpage]{draftwatermark}
\SetWatermarkText{\textsc{Confidential}}
\SetWatermarkScale{1.2}
\SetWatermarkColor[gray]{0.9}
\SetWatermarkFontSize{2cm}
\SetWatermarkAngle{45}
\fi
%%%%%%%%
\newcommand{\noauthorea}{}
diff --git a/artifact/artifact.tex b/artifact/artifact.tex
index eb1e6c2..1278dfa 100644
--- a/artifact/artifact.tex
+++ b/artifact/artifact.tex
...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\appendix
\section{Artifact
description} Description}
%Submission and reviewing guidelines and methodology: \\
%{\em http://cTuning.org/ae/submission-20151015.html}
...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Abstract}
\osrkit\ is a library that enables On-Stack Replacement (OSR) at arbitrary places in LLVM IR code. The artifact supports exploring how \osrkit\ can instrument IR code to support OSR transitions in the LLVM MCJIT runtime environment. A running example is presented based on the \texttt{isord} case study discussed in Section 3. We also support repeating experiments Q1, Q2, and Q3 presented in Section 5. The artifact includes an interactive
shell VM called
\texttt{tinyvm} \tinyvm\ for loading, inspecting, instrumenting, and executing IR code. It is distributed as a preconfigured Oracle VirtualBox VM.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
...
%{\em Fill in whatever is applicable with some informal keywords and remove the rest}
{\small
\begin{itemize} \begin{itemize}[parsep=0pt]
%\item {\bf Algorithm: }
\item {\bf Program: } {\tt shootout} C benchmarks (included, Sep 2015). %and a number of MATLAB benchmarks (included)
\item {\bf Compilation: } LLVM 3.6.2 (release build).
...
\end{itemize}
}
\subsubsection{How
delivered} Delivered}
The artifact ships as an Oracle VirtualBox 5 Appliance.
The latest version of the code is available at \url{https://github.com/dcdelia/tinyvm}.
\subsubsection{Hardware
dependencies} Dependencies}
The artifact requires an An x86-64
platform. platform is required.
\subsubsection{Software
dependencies} Dependencies}
The artifact was tested in Oracle VirtualBox 5.0.10.
...
To install the artifact, just import the appliance in Oracle VirtualBox.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Experiment
workflow} Workflow}
We propose two usage sessions. In the first session, we show how to generate and instrument an LLVM IR code based on the \texttt{isord} example presented in
Section 3 of the paper. \mysection\ref{se:osr-llvm}. The second session focuses on how to run the scripts used to generate the performance tables of
Section 5 \mysection\ref{se:experiments} related to questions Q1, Q2, and Q3. Question Q4 is based on additional third-party software (the MATLAB McVM runtime) and is not addressed in the artifact.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Evaluation and
expected result} Expected Result}
The main component of the artifact is the interactive
shell {\tt tinyvm} VM \tinyvm\ built on top of the LLVM MCJIT runtime environment and the \osrkit\ library. The
shell VM supports
loading, inspecting, instrumenting, interactive invocation of LLVM IR functions either generated at run-time or loaded from disk. The main design goal behind \tinyvm\ is the creation of an interactive environment for IR manipulation and JIT-compilation of functions: for instance, it allows the user to insert OSR points in loaded functions, run optimization passes on them, display their CFGs, and repeatedly invoke a function for a specified amount of times. \tinyvm\ supports dynamic library loading and linking, and
executing includes a helper component for MCJIT that simplifies tasks such as handling multiple IR
code. modules, symbol resolution in presence of multiple versions of a function, and tracking native code and other machine-level generated objects such as Stackmaps.
\subsubsection{Session 1: OSR instrumentation in \osrkit}
\subsubsection{Session 2: Performance Figures}
The experiments can be repeated by executing
the scripts
on a selection of the \shootout\ benchmarks~\cite{shootout}. Each benchmark was compiled in {\tt
tinyvm/shootout/scripts}. clang} with both {\tt -O0} and {\tt -O1}. For each benchmark {\tt X}, the directory {\tt tinyvm/shootout/X/} contains:
\begin{itemize}[parsep=0pt]
\item {\tt C}: C code
\item {\tt bench.ll}: baseline IR code ({\tt -O0})
\item {\tt bench-O1.ll}: baseline IR code ({\tt -O1})
\end{itemize}
\noindent Each experiment runs 10 identical trials. We manually collected the figures from the console output and analyzed them, computing confidence intervals, etc.
\paragraph{Baseline.} The first step consists in generating figures for the baseline version of each benchmark.
\paragraph{Question Q1.} The purpose of the experiment is assessing the impact on code quality due to the presence of OSR
points in the code by measuring how . points.
%[Q2] What is the run-time overhead of an OSR transition, for instance to a clone of the running function?
%[Q3] What is the overhead of \osrkit\ for inserting OSR points and creating a stub or a continuation function?
diff --git a/conclusions.tex b/conclusions.tex
index 16d1fd2..6e06015 100644
--- a/conclusions.tex
+++ b/conclusions.tex
...
%\fi
\paragraph{Live Version of this Paper.}
We complement the traditional scholarly article publication model by maintaining a live version of this paper at
\url{https://www.authorea.com/users/55853/articles/66046}. {\small\url{https://www.authorea.com/users/55853/articles/66046}} and {\small\url{https://github.com/camild/article-llvm-osr}}. The live version incorporates continuous feedback by the community, providing post-publication fixes, improvements, and extensions.