[pypy-svn] r77925 - pypy/extradoc/talk/pepm2011
cfbolz at codespeak.net
cfbolz at codespeak.net
Thu Oct 14 14:43:50 CEST 2010
Author: cfbolz
Date: Thu Oct 14 14:43:49 2010
New Revision: 77925
Modified:
pypy/extradoc/talk/pepm2011/escape-tracing.pdf
pypy/extradoc/talk/pepm2011/paper.tex
Log:
fix another an XXX and a typo
Modified: pypy/extradoc/talk/pepm2011/escape-tracing.pdf
==============================================================================
Binary files. No diff available.
Modified: pypy/extradoc/talk/pepm2011/paper.tex
==============================================================================
--- pypy/extradoc/talk/pepm2011/paper.tex (original)
+++ pypy/extradoc/talk/pepm2011/paper.tex Thu Oct 14 14:43:49 2010
@@ -488,13 +488,17 @@
first \lstinline{guard_class} instruction will fail and execution will continue
using the interpreter.
-The trace shows the inefficiencies of \lstinline{f} clearly, if one looks at the
-number of \lstinline{new}, \lstinline{set/get} and \lstinline{guard_class} operations.
+The trace shows the inefficiencies of \lstinline{f} clearly, if one looks at
+the number of \lstinline{new}, \lstinline{set/get} and \lstinline{guard_class}
+operations. The number of \lstinline{guard_class} operation is particularly
+problematic, not only because of the time it takes to run them. All guards also
+have additional information attached that makes it possible to return to the
+interpreter, should the guard fail. This means that many guard operations also
+lead to a memory problem.
+
In the rest of the paper we will see how this trace can be optimized using
partial evaluation.
-XXX add comment that guards are not only slow, but also use lots of memory
-
\section{Object Lifetimes in a Tracing JIT}
\label{sec:lifetimes}
@@ -571,7 +575,7 @@
but it is only used to optimize operations within a trace.
The partial evaluation works by traversing the trace from beginning to end.
-Whenever a \lstinline{new} operation is seen, the operation is removed and a \empth{static
+Whenever a \lstinline{new} operation is seen, the operation is removed and a \emph{static
object}\footnote{Here ``static'' is meant in the sense of partial
evaluation, \ie known at partial evaluation time, not in the sense of static
allocation or static method.} is constructed and associated with the variable
More information about the Pypy-commit
mailing list