Vladimir Makarov
Vladimir Makarov
  • @vnmakarov

Vladimir Makarov is a software developer. His major interests lay in algorithms, programming languages, compilers and JITs. Vladimir finished Moscow Institute of Physics and Technology and got his PhD in computer science in the Russian Academy of Sciences in 1993. Last 25 years he has been working on GCC at RedHat. Vladimir started his work on Ruby MRI in 2015. His MRI projects were new hash tables and implementation of new VM instructions and JIT. Vladimir lives in Toronto, Canada.

A Faster CRuby interpreter with dynamically specialized IR

A new CRuby internal representation (IR) dynamically specialized during execution will be presented. The major specialization includes generation of

  • Hybrid stack-RTL instructions
  • Type specialized instructions using basic block versioning technique
  • Speculatively specialized instructions based on profile-based information

Deoptimization technique of speculatively specialized instructions when the original assumptions become wrong will be also discussed.

Using specialized IR can significantly speed up the interpretation and can permit generation of effective JIT code with static compilers like MIR or GCC. The new IR can be also used to implement Ruby specific optimizations, e.g. inlining.

Performance comparison of CRuby interpreter with the specialized IR, the current CRuby interpreter, YJIT, and MJIT will be given for some benchmarks.