[pypy-svn] r63792 - pypy/extradoc/talk/icooolps2009

cfbolz at codespeak.net cfbolz at codespeak.net
Tue Apr 7 15:28:50 CEST 2009


Author: cfbolz
Date: Tue Apr  7 15:28:47 2009
New Revision: 63792

Modified:
   pypy/extradoc/talk/icooolps2009/paper.tex
Log:
I got another round of review


Modified: pypy/extradoc/talk/icooolps2009/paper.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009/paper.tex	(original)
+++ pypy/extradoc/talk/icooolps2009/paper.tex	Tue Apr  7 15:28:47 2009
@@ -50,7 +50,7 @@
 \alignauthor Carl Friedrich Bolz\\
        \affaddr{Heinrich-Heine-Universität Düsseldorf}\\
        \affaddr{STUPS Group}\\
-       \affaddr{Deutschland}\\
+       \affaddr{Germany}\\
        \email{cfbolz at gmx.de}
 \alignauthor Antonio Cuni\\
        \affaddr{University of Genova}\\
@@ -72,10 +72,10 @@
 
 \begin{abstract}
 We present techniques for improving the results when a tracing JIT compiler is
-applied to an interpreter. An unmodified tracing JIT performs not as well as one
+applied to an interpreter.XXXAbrupt start - is the relevanz really immediately clear?XXX An unmodified tracing JIT performs not as well as one
 would hope when the compiled program is itself a bytecode interpreter. We
-examine why that is the case, and how matters can be improved by adding markers to
-the interpreter, that help the tracing JIT to improve the results. We evaluate
+examine the reasons for that, and how matters can be improved by adding markers to
+the interpreter that help the tracing JIT to improve the results. We evaluate
 the techniques by using them both on a small example as well as on a full Python
 interpreter. This work has been done in the context of the PyPy project.
 
@@ -117,7 +117,7 @@
 interpreter for the language in a subset of Python. This subset is chosen in
 such a way that programs in it can be compiled into various target environments,
 such as C/Posix, the CLI or the JVM. The PyPy project is described in more
-details in Section \ref{sect:pypy}.
+detail in Section \ref{sect:pypy}.
 
 In this paper we discuss ongoing work in the PyPy project to improve the
 performance of interpreters written with the help of the PyPy toolchain. The
@@ -168,8 +168,7 @@
 \label{sect:pypy}
 
 The PyPy project\footnote{http://codespeak.net/pypy}
-\cite{rigo_pypys_2006,carl_friedrich_bolz_to_2007} was started to implement a
-new Python interpreter in Python but has now extended its goals to be an
+\cite{rigo_pypys_2006,carl_friedrich_bolz_to_2007} is an
 environment where flexible implementation of dynamic languages can be written.
 To implement a dynamic language with PyPy, an interpreter for that language has
 to be written in RPython \cite{ancona_rpython:step_2007}. RPython (``Restricted
@@ -377,7 +376,7 @@
 interpreters it is also the only hot loop).  Tracing one iteration of this
 loop means that
 the recorded trace corresponds to execution of one opcode. This means that the
-assumption that the tracing JIT makes -- that several iterations of a hot loop
+assumption made by the tracing JIT -- that several iterations of a hot loop
 take the same or similar code paths -- is wrong in this case. It is very
 unlikely that the same particular opcode is executed many times in a row.
 \begin{figure}
@@ -413,7 +412,7 @@
 \label{fig:square}
 \end{figure}
 
-Let's look at an example. Figure \ref{fig:tlr-basic} shows the code of a very
+An example is given in Figure \ref{fig:tlr-basic}. It shows the code of a very
 simple bytecode interpreter with 256 registers and an accumulator. The
 \texttt{bytecode} argument is a string of bytes, all register and the
 accumulator are integers. A program for this interpreter that computes
@@ -434,7 +433,7 @@
 
 To improve this situation, the tracing JIT could trace the execution of several
 opcodes, thus effectively unrolling the bytecode dispatch loop. Ideally, the
-bytecode dispatch loop should be unrolled exactly so much, that the unrolled version
+bytecode dispatch loop should be unrolled exactly so much that the unrolled version
 corresponds to a \emph{user loop}. User loops
 occur when the program counter of the \emph{language interpreter} has the
 same value several times. This program counter is typically stored in one or several
@@ -474,7 +473,7 @@
 check again only needs to be performed at the backward branches of the language
 interpreter.
 
-The language interpreter uses a similar techniques to detect \emph{hot user
+The language interpreter uses a similar technique to detect \emph{hot user
 loops}: the profiling is done at the backward branches of the user program,
 using one counter per seen program counter of the language interpreter.
 
@@ -826,14 +825,14 @@
 interpreter make it appear likely that they can be scaled up to realistic
 examples.
 
-Of course there is a lot of work still left to do. Various optimizations are not
-quite finished. Both tracing and leaving machine code is very slow due to a
+Of course there is a lot of work still left to do XXX fix this phrase. Various optimizations are not
+quite finished. Both tracing and leaving machine code are very slow due to a
 double interpretation overhead and we might need techniques for improving those.
 Furthermore we need to apply the JIT to the various interpreters that are
 written in RPython to evaluate how widely applicable the described techniques
 are. Possible targets for such an evaluation would be the SPy-VM, a Smalltalk
 implementation \cite{bolz_back_2008}, a Prolog interpreter or PyGirl, a Gameboy
-emulator \cite{XXX}; but also less immediately obvious ones, like Python's
+emulator \cite{XXX}; but also not immediately obvious ones, like Python's
 regular expression engine. 
 
 If these experiments are successful we hope that we can reach a point where it



More information about the Pypy-commit mailing list