what it does generate optimized machine code for commonly executed paths using runtime knowledge (types, paths taken) antocuni, arigo (EuroPython 2011) PyPy training session June 20 2011 8 / 1
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 antocuni, arigo (EuroPython 2011) PyPy training session June 20 2011 9 / 1
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) antocuni, arigo (EuroPython 2011) PyPy training session June 20 2011 10 / 1