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

cfbolz at codespeak.net cfbolz at codespeak.net
Wed Apr 1 23:24:36 CEST 2009


Author: cfbolz
Date: Wed Apr  1 23:24:34 2009
New Revision: 63509

Modified:
   pypy/extradoc/talk/icooolps2009/paper.tex
Log:
Going over some changes by Anto. Still not quite happy with this area.


Modified: pypy/extradoc/talk/icooolps2009/paper.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009/paper.tex	(original)
+++ pypy/extradoc/talk/icooolps2009/paper.tex	Wed Apr  1 23:24:34 2009
@@ -4,6 +4,7 @@
 \usepackage{fancyvrb}
 \usepackage{color}
 \usepackage{ulem}
+\usepackage[utf8]{inputenc}
 
 \newboolean{showcomments}
 \setboolean{showcomments}{true}
@@ -31,16 +32,16 @@
 
 \begin{document}
 
-\title{Tracing the Meta-Level: PyPy's JIT Compiler}
+\title{Tracing the Meta-Level: PyPy's Tracing JIT Compiler}
 
 \numberofauthors{3}
 \author{
 \alignauthor Carl Friedrich Bolz\\
-       \affaddr{Heinrich-Heine-Universität Düsseldorf}\\
+       \affaddr{Heinrich-Heine-Universität Düsseldorf}\\
        \affaddr{Softwaretechnik und Programmiersprachen}\\
-       \affaddr{Institut für Informatik}\\ 
-       \affaddr{Universitätsstra{\ss}e 1}\\
-       \affaddr{D-40225 Düsseldorf}\\
+       \affaddr{Institut für Informatik}\\ 
+       \affaddr{Universitätsstra{\ss}e 1}\\
+       \affaddr{D-40225 Düsseldorf}\\
        \affaddr{Deutschland}\\
        \email{cfbolz at gmx.de}
 \alignauthor Antonio Cuni\\
@@ -118,6 +119,8 @@
 \ref{sect:implementation}. This work is not finished, but already produces some
 promising results, which we will discuss in Section \ref{sect:evaluation}.
 
+XXX contributions of this paper include:
+
 
 %- dynamic languages important
 %- notoriously difficult to achieve good performance
@@ -187,7 +190,7 @@
 someone that has read already some papers for JavaScript.}
 
 
-Tracing JITs are an idea explored by the Dynamo project
+Tracing JITs are an idea initially explored by the Dynamo project
 \cite{bala_dynamo:transparent_2000} in the context of dynamic optimization of
 machine code at runtime. The techniques were then successfully applied to Java
 VMs \cite{gal_hotpathvm:effective_2006}. It also turned out that they are a
@@ -228,28 +231,22 @@
 loops in the user program.
 
 When a hot loop is identified, the interpreter enters a
-special mode, called \emph{tracing mode}. \sout{When in tracing mode, the interpreter
-records a history (the \emph{trace}) of all the operations it executes, in addition
-to actually performing the operations.
-} \anto{During tracing, the interpreter records a history of all the
-  operations it executes.}
+special mode, called \emph{tracing mode}. During tracing, the interpreter
+records a history of all the operations it executes.
 
-\anto{
 Such a history is called a \emph{trace}: it is a sequential list of
 operations, together with their actual operands and results.  By examining the
 trace, it is possible to produce highly efficient machine code by emitting
 only the operations needed.  Being sequential, the trace represents only one
-of the many possible paths through the code: to ensure correctness, the trace
+of the many possible paths through the code. To ensure correctness, the trace
 contains a \emph{guard} at every possible point where the path could have
-followed another direction, for example \texttt{if}s or indirect/virtual
-calls.  When emitting the machine code, we turn every guard into a quick check
+followed another direction, for example conditions or indirect/virtual
+calls.  When emitting the machine code, every guard is turned into a quick check
 to guarantee that the path we are executing is still valid.  If a guard fails,
-we immediately quit from the machine code and continue the execution in other
+we immediately quit from the machine code and continue the execution by falling
 ways.  
-}
 
 During tracing, the trace is repeatedly
-(XXX make this more precise: when does the check happen?)
 checked whether the interpreter is at a position in the program that it had seen
 earlier in the trace. If this happens, the trace recorded corresponds to a loop
 in the program that the tracing interpreter is running. At this point, this loop
@@ -257,12 +254,6 @@
 of all the operations in it. The machine code can then be immediately executed,
 as it represents exactly the loop that was being interpreted so far.
 
-\anto{XXX I think it's worth spending one more paragraph to explain what a
-  trace really is, i.e. that it's a list of \textbf{sequential} operations,
-  intermixed to guards which guarantee that this particular sequence is still
-  valid.  At the moment, the definition of trace is not given explicitly and
-  it's mixed with the details of how the JIT work}
-
 This process assumes that the path through the loop that was traced is a
 "typical" example of possible paths (which is statistically likely). Of course
 it is possible that later another path through the loop is taken, therefore the



More information about the Pypy-commit mailing list