[pypy-svn] r63752 - pypy/extradoc/talk/icooolps2009-dotnet
davide at codespeak.net
davide at codespeak.net
Mon Apr 6 23:36:28 CEST 2009
Author: davide
Date: Mon Apr 6 23:36:27 2009
New Revision: 63752
Modified:
pypy/extradoc/talk/icooolps2009-dotnet/intro.tex
Log:
small corrections, a comment added
Modified: pypy/extradoc/talk/icooolps2009-dotnet/intro.tex
==============================================================================
--- pypy/extradoc/talk/icooolps2009-dotnet/intro.tex (original)
+++ pypy/extradoc/talk/icooolps2009-dotnet/intro.tex Mon Apr 6 23:36:27 2009
@@ -76,8 +76,8 @@
The main difference between the JIT compilers generated by PyPy and the
ones found in other projects like IronPython is that the latter compile
-code at the method granularity -- if on the one hand they can exploit
-some of the knowledge gathered at runtime (e.g.\ the types of method
+code at the method granularity: if on the one hand they can exploit
+some of the knowledge gathered at runtime \davide{this contradicts what is stated in the intro} (e.g.\ the types of method
parameters), on the other hand they can do little to optimize most of
the operations inside, because few assumptions can be made about the
global state of the program. The PyPy JITs, on the other hand, work at
@@ -86,7 +86,7 @@
When using PyPy, the first step is to write an interpreter for the chosen language. Since it
must be fed to the translation toolchain, the interpreter has to be written in
RPython. Then, to guide the process, we need to add few manual
-annotations to the interpreter, in order to teach the JIT generator which
+annotations (called hints) to the interpreter, in order to teach the JIT generator which
information is important to know at compile-time.
From these annotations, PyPy will statically generate an interpreter and a JIT
compiler in a single executable (here a .NET executable).
@@ -110,11 +110,11 @@
Potentially, the JIT compiler generates new code for each different run-time
value seen in variables it is interested in.
This implies that the generated code needs to contain some sort of updatable
-switch, or \emph{flexswitch}, which can pick the right code path based on the
+switch, called \emph{flexswitch}, which can pick the right code path based on the
run-time value. Typically, the value we switch on is the runtime dynamic type
of a value, so that the JIT compiler has all information needed to produce
very good code for that specific case.
Modifying the old code to link to the newly generated one is very challenging on
.NET, as the framework does not offer any primitive to do this. Section
-\ref{sec:clibackend} explains how it is possible to simulate this behaviour.
+\ref{sec:clibackend} explains how it is possible to obtain this behaviour.
More information about the Pypy-commit
mailing list