Author: Antonio Cuni <anto.c...@gmail.com> Branch: extradoc Changeset: r3788:fb3be984aa8b Date: 2011-06-25 12:10 +0200 http://bitbucket.org/pypy/extradoc/changeset/fb3be984aa8b/
Log: slides as they were presented diff --git a/talk/ep2011/training/talk.pdf b/talk/ep2011/training/talk.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5dcb970c3060f632acdb23523f1b4700ac8a87da GIT binary patch [cut] diff --git a/talk/ep2011/training/talk.rst b/talk/ep2011/training/talk.rst --- a/talk/ep2011/training/talk.rst +++ b/talk/ep2011/training/talk.rst @@ -100,10 +100,54 @@ -How the JIT works ------------------------ +Just-in-Time Compilation +------------------------ -XXX write me +* Tracing JIT, like TraceMonkey + +* Complete by construction + +* Supports Intel x86, amd64, and soon ARM + + +Short introduction to JITting +----------------------------- + +* run code with the interpreter + +* observe what it does + +* generate optimized machine code for commonly executed paths + +* using runtime knowledge (types, paths taken) + +Tracing JIT +----------- + +* compiles one loop at a time + +* generates linear code paths, recording what the interpreter did + +* for each possible branch, generate a guard, that exits assembler on triggering + +* if guard fails often enough, start tracing from the failure + +Meta-Tracing in PyPy +-------------------- + +* The explanation above assumes a tracing JIT for the full Python + language + +* Would need to be maintained whenever we change the Python version we + support + +* Instead, we have a "meta-tracing JIT" + +* A very important point for us since we don't have a huge team + to implement all Python semantics for the JIT + +* We trace the python interpreter's main loop (running N times) interpreting + a python loop (running once) PYPYLOG _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit