Publication | Closed Access
Tracing the meta-level
277
Citations
18
References
2009
Year
Unknown Venue
EngineeringMetaverseCompiler TechnologyComputer ArchitectureSoftware EngineeringInterpreter (Computing)Unmodified Tracing JitSoftware AnalysisFormal VerificationMetatheoryParallel ComputingCompilersDynamic CompilationComputer EngineeringMetaprogrammingJit CompilersComputer ScienceOptimizing CompilerStatic Program AnalysisProgram AnalysisSoftware TestingFormal MethodsParallel ProgrammingPypy Project
Tracing JIT compilers accelerate loop‑heavy programs but provide little benefit when applied directly to bytecode interpreters. The paper aims to demonstrate how to guide tracing JIT compilers to substantially speed up bytecode interpreters in the PyPy project. The authors unroll the bytecode dispatch loop using interpreter‑provided hints and evaluate the approach on two PyPy interpreters, including a full Python interpreter.
We attempt to apply the technique of Tracing JIT Compilers in the context of the PyPy project, i.e., to programs that are interpreters for some dynamic languages, including Python. Tracing JIT compilers can greatly speed up programs that spend most of their time in loops in which they take similar code paths. However, applying an unmodified tracing JIT to a program that is itself a bytecode interpreter results in very limited or no speedup. In this paper we show how to guide tracing JIT compilers to greatly improve the speed of bytecode interpreters. One crucial point is to unroll the bytecode dispatch loop, based on two kinds of hints provided by the implementer of the bytecode interpreter. We evaluate our technique by applying it to two PyPy interpreters: one is a small example, and the other one is the full Python interpreter.
| Year | Citations | |
|---|---|---|
Page 1
Page 1