[pypy-svn] r77698 - pypy/extradoc/talk/pepm2011

cfbolz at codespeak.net cfbolz at codespeak.net
Thu Oct 7 18:32:59 CEST 2010


Author: cfbolz
Date: Thu Oct  7 18:32:57 2010
New Revision: 77698

Modified:
   pypy/extradoc/talk/pepm2011/paper.tex
Log:
kill more XXXs


Modified: pypy/extradoc/talk/pepm2011/paper.tex
==============================================================================
--- pypy/extradoc/talk/pepm2011/paper.tex	(original)
+++ pypy/extradoc/talk/pepm2011/paper.tex	Thu Oct  7 18:32:57 2010
@@ -57,7 +57,7 @@
 \authorinfo{Carl Friedrich Bolz \and Antonio Cuni \and Maciej Fijałkowski \and Michael Leuschel \and Samuele Pedroni \and Armin Rigo}
            {Heinrich-Heine-Universität Düsseldorf, STUPS Group, Germany XXX}
            {cfbolz at gmx.de, anto.cuni at gmail.com, fijal at merlinux.eu,
-           samuele.pedroni at gmail.com, arigo at tunes.org}
+           leuschel at cs.uni-duesseldorf.de, samuele.pedroni at gmail.com, arigo at tunes.org}
 
 %\numberofauthors{3}
 %\author{
@@ -422,6 +422,8 @@
 looks at the number of \texttt{new} (corresponding to object creation),
 \texttt{set/get} (corresponding to attribute reads/writes) and
 \texttt{guard\_class} operations (corresponding to method calls).
+In the rest of the paper we will see how this trace can be optimized using
+partial evaluation.
 
 Note how the functions that are called by \texttt{f} are automatically inlined
 into the trace. The method calls are always preceded by a \texttt{guard\_class}
@@ -434,10 +436,6 @@
 first \texttt{guard\_class} instruction will fail and execution will continue
 using the interpreter.
 
-XXX simplify traces a bit more
-
-In the next section, we will see how this can be improved upon, using partial
-evaluation. XXX
 
 \section{Object Lifetimes in a Tracing JIT}
 \label{sec:lifetimes}
@@ -865,11 +863,6 @@
 
 \subsection{Optimizing Across the Jump}
 
-\footnote{This section is a bit
-science-fictiony. The algorithm that PyPy currently uses is significantly more
-complex and much harder than the one that is described here. The resulting
-behaviour is very similar, however, so we will use the simpler version (and we
-might switch to that at some point in the actual implementation).}
 
 Let's look at the final trace obtained in Section~\ref{sec:statics} for the
 example loop. The final trace (Figure~\ref{fig:step1}) was much better than the
@@ -886,9 +879,14 @@
 very quickly in the next iteration. In addition, the type checks at the start
 of the loop are superfluous, at least after the first iteration.
 
+
 The reason why we cannot optimize the remaining allocations away is because
 their lifetime crosses the jump. To improve the situation, a little trick is
-needed. The trace in Figure~\ref{fig:step1} represents a loop, i.e. the jump at the end jumps to
+needed.\footnote{The algorithm that PyPy currently uses is significantly more complex
+than the one that is described here. The resulting behaviour is nearly
+identical, however, so we will use the simpler version (and plan to switch to
+that at some point in the actual implementation).}
+The trace in Figure~\ref{fig:step1} represents a loop, i.e. the jump at the end jumps to
 the beginning. Where in the loop the jump occurs is arbitrary, since the loop
 can only be left via failing guards anyway. Therefore it does not change the
 semantics of the loop to put the jump at another point into the trace and we
@@ -896,15 +894,13 @@
 appear in the current \texttt{jump}. This needs some care, because the arguments to
 \texttt{jump} are all currently live variables, thus they need to be adapted.
 
-If we do that for our example trace, the trace looks like in Figure~\ref{fig:step2}.
-
 \begin{figure}
 \includegraphics{figures/step2.pdf}
 \label{fig:step2}
 \caption{Shifting the Jump}
 \end{figure}
 
-
+If we do that for our example trace, the trace looks like in Figure~\ref{fig:step2}.
 Now the lifetime of the remaining allocations no longer crosses the jump, and
 we can run our partial evaluation a second time, to get the trace in
 Figure~\ref{fig:step3}.



More information about the Pypy-commit mailing list