Slava Egorov

About

I am a software engineer interested in design and implementation of programming languages, compilers, runtime systems, low-level and systems programming, performance optimization. I occasionally give talks about these topics

Currently, I work at Google as an overall technical lead for the Dart programming language. I joined the team in 2012 to design and implement a speculative optimizing JIT in the Dart VM. The compiler pipeline that we have created later became the foundation for Dart's native AOT compiler.

In 2016 I had a brief stint at DeepMind maintaining LuaJIT for them.

Before joining Dart I was part of the V8 JavaScript engine team at Google. Here I contributed to Crankshaft and efforts to modernize V8's GC. I have been involved in OilPan - effort to replace reference counting based memory management in Blink with an precise-on-heap mark-and-sweep GC.

I started my carrier working on Excelsior JET a proprietary Java VM with an AOT compiler.

Posts

2025

2024

Microbenchmarks are experiments

Taking a look at a viral loops microbenchmark which like many other similar microbenchmarks does not measure anything useful or insightful. Nov 2024

2023

2021

2018

2017

2016

2015

jsunderhood digest (in Russian)

A Russian-language digest of my week running the @jsunderhood Twitter account, answering questions about V8 internals. Apr 2015

Browser as an Interactive Disassembler

Trying to understand why HotSpot's C2 turned one loop into three led me to build Saga, a toy browser tool that rebuilds a CFG and an SSA IR from disassembly to make it readable. Mar 2015

What's up with monomorphism?

What do monomorphic, polymorphic and megamorphic actually mean? A tour of how inline caches collect type feedback and how V8's optimizing compiler uses it, and why too many shapes at one call site hurt performance. Jan 2015

2014

2013

Hidden classes vs jsPerf

Another exploration of misleading jsPerf results: this time prototype methods vs closures attached directly to the object. Aug 2013

Release the IRHydra!

Presenting a browser-based tool for exploring IR and native code produced by V8 and Dart VM optimizing compilers. Feb 2013

2012

Shaky diagramming

About a little Dart tool I use to draw shaky diagrams for my posts. Nov 2012

2011

The trap of the performance sweet spot

When writing performance sensitive JavaScript code you can resort to structuring it in a way that makes JS look like C. This way you can hit JS'es performance sweet spot, but the code itself will leave bitter aftertaste in your mouth. Nov 2011