[pypy-commit] extradoc extradoc: start drafting an intro very slowly

cfbolz noreply at buildbot.pypy.org
Wed Jun 15 10:47:51 CEST 2011


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: extradoc
Changeset: r3685:0a0968152050
Date: 2011-06-15 10:49 +0200
http://bitbucket.org/pypy/extradoc/changeset/0a0968152050/

Log:	start drafting an intro very slowly

diff --git a/talk/iwtc11/paper.tex b/talk/iwtc11/paper.tex
--- a/talk/iwtc11/paper.tex
+++ b/talk/iwtc11/paper.tex
@@ -134,7 +134,33 @@
 
 \section{Introduction}
 
-The text of the paper begins here.
+One of the advantages that tracing JIT compilers have above traditional tracing
+JITs is that their optimizers are much easier to write. Because a tracing JIT
+produces only linear pieces of code without control flow joins, many
+optimization passes on traces can have a very simple structure. They often
+consist of one forward pass through the trace, discarding and replacing
+operations in the trace by simpler ones as they walk along it. This makes
+optimization of traces be very similar to symbolic execution. Many
+difficult problems in traditional optimizers become tractable if the optimizer
+does not need to deal with control flow merges.
+
+One disadvantage of this simplicity is that such simple forward-passing
+optimizers ignore the only bit of control flow they have available, which is
+the fact that most traces actually represent loops. Making use of this
+information is necessary to perform such optimizations as loop-invariant code
+motion or optimizations that improve across several iterations of the loop.
+Having to deal with this property of traces makes optimizers immediately more
+complex, as a more global view of a trace needs to be considered when
+optimizing.
+
+In this paper we want to address this problem by proposing a simple scheme that
+makes it possible to turn simple optimizations using one forward pass into
+optimizations that can do loop invariant code motion and similar loop-aware
+improvements. Using this scheme one does not need to change the underlying
+optimization much to get these advantages.
+
+
+XXX "bridge" is not a standard term
 
 \subsection{Running Example}
 \label{sub:example}
@@ -263,8 +289,8 @@
     \item \lstinline{new} creates a new object.
     \item \lstinline{get} reads an attribute of an object.
     \item \lstinline{set} writes to an attribute of an object.
-    \item \lstinline{guard_class} is a precise type check and precedes an
-    (inlined) method call and is followed by the trace of the called method.
+    \item \lstinline{guard_class} is a precise type check. It typically precedes
+    an (inlined) method call and is followed by the trace of the called method.
     \item \lstinline{guard_true} checks that a boolean is true.
 \end{itemize}
 


More information about the pypy-commit mailing list