Sea of nodes

A sea of nodes is a graph representation of single-static assignment (SSA) representation of a program that combines data flow and control flow, and relaxes the control flow from a total order to a partial order, keeping only the orderings required by data flow.[1]: 86,113 [2]: 248 [3]: 11 [4][5]: 163 [6]: 25 [7][8]: 2  It is similar to a value dependency graph (VDG).[9]: 1 

It makes it easier for an optimizer to reorder instructions, but requires a global code motion algorithm to convert it back into a control flow graph (CFG).[1]: 86,113 [2]: 248 [3]: 14 [10] It allows dead code elimination and constant propagation to be done together, which allows both optimizations to apply more often.[9]: 4 

It is used as an intermediate representation (IR) in HotSpot,[5]: 163  LibFirm,[5]: 163  GraalVM,[5]: 163 [8]: 2 [11] and V8's TurboFan JIT compiler.[10]

References