Author: Carl Friedrich Bolz <[email protected]>
Branch: extradoc
Changeset: r3618:983a244ee43e
Date: 2011-06-08 17:48 +0200
http://bitbucket.org/pypy/extradoc/changeset/983a244ee43e/
Log: don't stress polymorphic inline caches anymore, focus on runtime
feedback.
diff --git a/talk/icooolps2011/paper.tex b/talk/icooolps2011/paper.tex
--- a/talk/icooolps2011/paper.tex
+++ b/talk/icooolps2011/paper.tex
@@ -115,8 +115,7 @@
feedback. This restricted their performance. In this paper we describe the
mechanisms in PyPy's meta-tracing JIT that can be used to control
runtime feedback in language-specific ways. These mechanisms are flexible
-enough to express classical VM techniques such as maps and polymorphic inline
-caches.
+enough to express classical VM techniques such as maps and runtime type
feedback.
\end{abstract}
@@ -169,8 +168,8 @@
meta-tracing context.
Together these hints can be used to express many classic implementation
-techniques used for object models of dynamic languages, such as maps and
-polymorphic inline caches.
+techniques used for object models of dynamic languages, such runtime type
+feedback and maps.
The contributions of this paper are:
\begin{itemize}
@@ -435,11 +434,10 @@
the static setting of classic partial evaluation.
Promotion is essentially a tool for trace specialization. There are places in
-the interpreter where knowing that a value is constant opens a lot of
-optimization opportunities, even though it
-could have different values in practice. In such a place, promotion can be
used. The
-typical reason to do that is if there is
-a lot of computation depending on the value of one variable.
+the interpreter where it would open a lot of optimization opportunities if a
+variable were constant, even though it could have different values in
+practice. In such a place, promotion can be used. The typical reason to do that
+is if there is a lot of computation depending on the value of one variable.
Let us make this more concrete. If we trace a call to the function (written in
RPython) on the left, we get the trace on the right:
@@ -982,7 +980,9 @@
Somewhat relatedly, the proposed ``invokedynamic'' bytecode
\cite{rose_bytecodes_2009} that will be added to the JVM is supposed to make
the
-implementation of dynamic languages on top of JVMs easier. The bytecode gives
the user access to generalized inline caches. It requires of course compilation
to JVM bytecode instead of simply writing an interpreter, predictability of
performance across JVMs is also an open question.
+implementation of dynamic languages on top of JVMs easier. The bytecode gives
+the user access to generalized inline caches. It requires of course compilation
+to JVM bytecode instead of writing an interpreter.
We already explored promotion in other contexts, such as earlier versions of
PyPy's JIT.
@@ -991,11 +991,11 @@
used by Psyco \cite{rigo_representation-based_2004} (promotion is called
"unlifting" in this paper) a method-based JIT compiler for Python written by
one of the authors. Promotion is quite similar to
-(polymorphic) inline caching and runtime type feedback techniques which were
+runtime type feedback (and also inline caching) techniques which were
first used in Smalltalk \cite{deutsch_efficient_1984} and SELF
-\cite{hoelzle_optimizing_1991,hoelzle_optimizing_1994} implementations.
-Promotion is more general because any information can be cached in line, not
-just classes of method receivers.
+\cite{hoelzle_optimizing_1994} implementations.
+Promotion is more general because any information can be fed back into
+compilation, not just types.
%is there anything about versions? smalltalks tend to clear their method caches
%when new methods are added. self and java use dependency tracking and
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit