Sea of Nodes (2015)
darksi.de
darksi.de
Also, I remember reading an anecdote by the V8 team where they had regrets in choosing the sea of nodes representation over a more traditional 2-graph IR, but I can't find a link.
> The TurboFan JIT implements more aggressive optimizations than CrankShaft through a number of advanced techniques. JavaScript enters the compiler pipeline in a mostly unoptimized form and is translated and optimized to progressively lower forms until machine code is generated. The centerpiece of the design is a more relaxed sea-of-nodes internal representation (IR) of the code which allows more effective reordering and optimization.
I also heard people reference sea of nodes elsewhere before but I couldn't really get what made it special or a "sea if nodes". Only now I learn that that's basically all it is: data flow and control flow per node/element/instruction combined.
I guess without also going into what it actually enables it's a bit underwhelming.