antocuni at codespeak.net antocuni at codespeak.net
Fri Apr 3 18:52:38 CEST 2009

Author: antocuni
Date: Fri Apr  3 18:52:35 2009
New Revision: 63576

Modified:
Log:

==============================================================================
+++ pypy/extradoc/talk/icooolps2009-dotnet/conclusion.tex	Fri Apr  3 18:52:35 2009
@@ -56,23 +56,15 @@

\section{Conclusion and Future Work}

-In this paper we presented PyPy's JIT compiler generator, based on partial
-evaluation techniques, which can automatically turn an interpreter into a JIT
+In this paper we gave an overview of PyPy's JIT compiler generator,
+which can automatically turn an interpreter into a JIT
compiler, requiring the language developers to only add few \texttt{hint}s to
guide the generation process.

-We showed that classical partial evaluation cannot remove all the overhead
-proper of dynamically typed languages, and how the new operation called
-\emph{promotion} solves the problem, by delaying compile-time until the JIT
-knows enough to produce efficient code, and by continuously intermixing
-compile-time and runtime.  Moreover, we showed that our simple but still
-practically useful technique to avoid allocation of intermediate unnecessary
-objects plays well with promotion and helps to produce even better code.
-
-Finally, we presented the CLI backend for PyPy's JIT compiler generator, whose
+Then, we presented the CLI backend for PyPy's JIT compiler generator, whose
goal is to produce .NET bytecode at runtime.  We showed how it is possible to
circumvent intrinsic limitations of the virtual machine to implement
-promotion.  As a result, we proved that the idea of \emph{JIT layering} is
+flexswitches.  As a result, we proved that the idea of \emph{JIT layering} is
worth of further exploration, as it makes possible for dynamically typed
languages to be even faster than their statically typed counterpart in some
circumstances.
@@ -83,6 +75,8 @@
code, as tracing JITs do \cite{gal_hotpathvm_2006}.  By compilining whole
loops at once, the backends should be able to produce better code than today.

+\anto{XXX: cite the pypy tracing paper}
+
At the moment, some bugs and minor missing features prevent the CLI JIT
backend to handle more complex languages such as Python and Smalltalk.  We are
confident that once these problems will be fixed, we will get performance
@@ -92,3 +86,10 @@
implementation strategies, also considering the new features that might be
integrated into virtual machines.

+In particular, the \emph{Da Vinci Machine
+  Project} \footnote{http://openjdk.java.net/projects/mlvm/} is exploring and
+implementing new features to ease the implementation of dynamic languages on
+top of the JVM: some of these features, such as the new
+\emph{invokedynamic}\footnote{XXX} instruction and the \emph{tail call
+  optimization} can probably be exploited by a potential JVM backend to
+generate even more efficient code.