[pypy-svn] r79196 - pypy/extradoc/talk/pepm2011
cfbolz at codespeak.net
cfbolz at codespeak.net
Wed Nov 17 15:51:37 CET 2010
Author: cfbolz
Date: Wed Nov 17 15:51:35 2010
New Revision: 79196
Modified:
pypy/extradoc/talk/pepm2011/paper.tex
Log:
comments from the review
Modified: pypy/extradoc/talk/pepm2011/paper.tex
==============================================================================
--- pypy/extradoc/talk/pepm2011/paper.tex (original)
+++ pypy/extradoc/talk/pepm2011/paper.tex Wed Nov 17 15:51:35 2010
@@ -263,7 +263,7 @@
mostly mixed-mode execution environments, they contain both an interpreter and a
JIT compiler. By default the interpreter is used to execute the program, doing
some light-weight profiling at the same time. This profiling is used to identify
-the hot loops of the program. If a hot loop is found in that way, the
+the hot loops\reva{what is that? clarify} of the program. If a hot loop is found in that way, the
interpreter enters a special \emph{tracing mode}. In this tracing mode, the
interpreter tries to record all operations that it is executing while running one
iteration of the hot loop. This history of executed operations of one loop is
@@ -296,7 +296,7 @@
on. These guards are the only mechanism to stop the execution of a trace, the
loop end condition also takes the form of a guard.
-If one specific guard fails often enough, the tracing JIT will generate a new
+If one specific guard fails often enough\reva{when is that?}, the tracing JIT will generate a new
trace that starts exactly at the position of the failing guard
\cite{andreas_gal_incremental_2006}. The existing assembler is patched to jump
to the new trace when the guard fails. This approach guarantees that all the
@@ -373,7 +373,7 @@
dynamic language implementation. All the numbers are instances of either
\lstinline{BoxedInteger} or \lstinline{BoxedFloat}, therefore they consume space on the
heap. Performing many arithmetic operations produces lots of garbage quickly,
-putthing pressure on the garbage collector. Using double dispatching to
+putting pressure on the garbage collector. Using double dispatching to
implement the numeric tower needs two method calls per arithmetic operation,
which is costly due to the method dispatch.
@@ -1174,7 +1174,8 @@
complex than our simple one-pass optimization. Also, stack-allocation reduces
garbage-collection pressure but does not optimize away the actual accesses to
the stack-allocated object. In our case, an object is not needed at all any
-more.
+more. \reva{Has this relation pointed out before in some paper? Is it a
+novel contribution of your work?}
Chang \etal describe a tracing JIT for JavaScript running on top of a JVM
\cite{mason_chang_efficient_2007}. They mention in passing an approach to
@@ -1212,6 +1213,10 @@
imperative language.
In functional programming this idea was introduced as
constructor specialisation by Mogensen \cite{mogensen_constructor_1993}.
+\reva{I'd refer here to
+ deforestation (by Philip Wadler) and "short cut
+ deforestation" by Andrew Gill, John Launchbury, and Simon L
+ Peyton Jones}
%xxx:
%partially static data structures: kenichi asai's thesis?
More information about the Pypy-commit
mailing list