[pypy-svn] r63517 - pypy/extradoc/talk/icooolps2009
fijal at codespeak.net
fijal at codespeak.net
Thu Apr 2 07:16:18 CEST 2009
Author: fijal
Date: Thu Apr 2 07:16:15 2009
New Revision: 63517
Modified:
pypy/extradoc/talk/icooolps2009/paper.tex
Log:
another round of reading
Modified: pypy/extradoc/talk/icooolps2009/paper.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009/paper.tex (original)
+++ pypy/extradoc/talk/icooolps2009/paper.tex Thu Apr 2 07:16:15 2009
@@ -358,7 +358,11 @@
\emph{interpreter loops} are loops \emph{inside} the language interpreter. On
the other hand, \emph{user loops} are loops in the user program.
-\fijal{I'm lost, will continue later}
+\fijal{I find following paragraph out of scope and completely confusing, we
+should instead simply state that we unroll the loop, how we do that and
+why we do that. Completely ignore aspect of an interpreter loop I suppose,
+because everything previously keeps talking about can\_enter\_jit that closes
+loop being available at jump back bytecodes}
A tracing JIT compiler finds the hot loops of the program it is compiling. In
our case, this program is the language interpreter. The hot loop of the language
interpreter is its bytecode dispatch loop. Usually that is is also the only hot
@@ -398,6 +402,7 @@
\label{fig:square}
\end{figure}
+\fijal{This paragraph should go away as well}
Let's look at an example. Figure \ref{fig:tlr-basic} shows the code of a very
simple bytecode interpreter with 256 registers and an accumulator. The
\texttt{bytecode} argument is a string of bytes and all register and the
@@ -445,6 +450,9 @@
so it needs to be told with the help of a hint by the author of the language
interpreter.
+\fijal{This is wrong. Without virtuals there is also at most one assembler
+loop per user loop. If it has more branches, we enter the loop as usual and
+then we create a bridge for a new situation}
The condition for reusing already existing machine code needs to be adapted to
this new situation. In a classical tracing JIT there is at most one piece of
assembler code per loop of the jitted program, which in our case is the language
@@ -468,6 +476,7 @@
\label{fig:tlr-full}
\end{figure}
+\fijal{Stopped reading at that point}
Let's look at which hints would need to be applied to the example interpreter
from Figure \ref{fig:tlr-basic}. The basic thing needed to apply hints is a
subclass of \texttt{JitDriver} that lists all the variables of the bytecode
More information about the Pypy-commit
mailing list