Author: David Schneider <[email protected]>
Branch: extradoc
Changeset: r4560:1db34935ecb8
Date: 2012-08-14 14:18 +0200
http://bitbucket.org/pypy/extradoc/changeset/1db34935ecb8/

Log:    Backed out changeset c09a3f7c04c0

diff --git a/talk/vmil2012/paper.tex b/talk/vmil2012/paper.tex
--- a/talk/vmil2012/paper.tex
+++ b/talk/vmil2012/paper.tex
@@ -122,6 +122,7 @@
 
 %___________________________________________________________________________
 \todo{find a better name for \texttt{low-level resume data}}
+\todo{find better names for JIT front- and backend}
 \todo{mention somewhere that it is to be expected that most guards do not fail}
 \section{Introduction}
 
@@ -195,12 +196,12 @@
 Section~\ref{sec:Background}, such as the PyPy project, the RPython language
 and its meta-tracing JIT. Based on these concepts in Section~\ref{sec:Resume
 Data} we proceed to describe for RPython's tracing JIT the details of guards in
-the high-level, target independant, component of the JIT related to recording 
and storing the
+the frontend\bivab{better term for this?} related to recording and storing the
 information required to rebuild the interpreter state in case of a guard
-failure. Once the high-level component has traced and optimized a loop it 
invokes the
-low-level component to compile the operations to machine code, Section 
\ref{sec:Guards in
-the Backend} describes the aspects of the implementaion of guards in
-the low-level JIT component. The frequency of guards and the overhead 
associated with the
+failure. Once the frontend has traced and optimized a loop it invokes the
+backend to compile the operations to machine code, Section \ref{sec:Guards in
+the Backend} describes the low-level aspects of how guards are implemented in
+the JIT-backend. The frequency of guards and the overhead associated with the
 implementation described in this paper is discussed in
 Section~\ref{sec:evaluation}. Section~\ref{sec:Related Work} presents an
 overview about how guards are treated in the context of other just-in-time
@@ -309,7 +310,7 @@
     \label{fig:unopt-trace}
 \end{figure}
 
-\section{Guards in the High-Level JIT Components} %{Resume Data}
+\section{Guards in the Frontend} %{Resume Data}
 \label{sec:Resume Data}
 
 Since tracing linearizes control flow by following one concrete execution,
@@ -487,7 +488,7 @@
     \label{fig:trace-log}
 \end{figure}
 % section Resume Data (end)
-\section{Guards in the Low-Level JIT Component}
+\section{Guards in the Backend}
 \label{sec:Guards in the Backend}
 
 \begin{figure}
@@ -498,7 +499,7 @@
 
 
 After optimization the resulting trace is handed over to the platform specific
-low-level implementation to be compiled to machine code. The compilation phase 
consists of two
+backend to be compiled to machine code. The compilation phase consists of two
 passes over the lists of instructions, a backwards pass to calculate live
 ranges of IR-level variables and a forward pass to emit the instructions. 
During
 the forward pass IR-level variables are assigned to registers and stack
@@ -573,16 +574,16 @@
 that is used to leave the compiled trace in case of a guard failure.
 
 Using the encoded location information the bailout handler reads from the
-saved execution state the values that the IR-variables had at the time of the
-guard failure and stores them in a location that can be read by the high-level 
component.
-After saving the information the control is returned to the high-level 
component signaling
-which guard failed. The stored low-level information can be read and used to 
restore
-the execution state corresponding to the guard failure in the interpreter.
+saved execution state the values that the IR-variables had  at the time of the
+guard failure and stores them in a location that can be read by the frontend.
+After saving the information the control is passed to the frontend signaling
+which guard failed so the frontend can read the information passed and restore
+the state corresponding to the point in the program.
 
 As in previous sections the underlying idea for the design of guards is to have
 a fast on-trace profile and a potentially slow one in the bailout case where
 the execution has to return to the interpreter due to a guard failure. At the 
same
-time the data stored in the low-level component, required to rebuild the 
state, should be as
+time the data stored in the backend, required to rebuild the state, should be 
as
 compact as possible to reduce the memory overhead produced by the large number
 of guards, the numbers in Figure~\ref{fig:backend_data} illustrate that the
 compressed encoding currently has about 15\% to 25\% of the size of of the
@@ -640,9 +641,10 @@
 micro-benchmarks and larger programs.\footnote{\url{http://speed.pypy.org/}} 
The
 benchmarks were taken from the PyPy benchmarks repository using revision
 
\texttt{ff7b35837d0f}.\footnote{\url{https://bitbucket.org/pypy/benchmarks/src/ff7b35837d0f}}
-The benchmarks were run on a version of PyPy based on
-revision~\texttt{0b77afaafdd0} and patched to collect additional data about the
-guards in the generated machine 
code.\footnote{\url{https://bitbucket.org/pypy/pypy/src/0b77afaafdd0}} The
+The benchmarks were run on a version of PyPy based on the
+tag~\texttt{0b77afaafdd0} and patched to collect additional data about the
+guards in the machine code
+backends.\footnote{\url{https://bitbucket.org/pypy/pypy/src/0b77afaafdd0}} The
 tools used to run and evaluate the benchmarks including the patches applied to
 the PyPy sourcecode can be found in the repository for this
 
paper.\footnote{\url{https://bitbucket.org/pypy/extradoc/src/tip/talk/vmil2012}}
@@ -725,7 +727,7 @@
 The overhead that is incurred by the JIT to manage the \texttt{resume data},
 the \texttt{low-level resume data} as well as the generated machine code is
 shown in Figure~\ref{fig:backend_data}. It shows the total memory consumption
-of the code and of the data generated by the low-level component and an
+of the code and of the data generated by the machine code backend and an
 approximation of the size of the \texttt{resume data} structures for the
 different benchmarks mentioned above. The machine code taken into account is
 composed of the compiled operations, the trampolines generated for the guards
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to