加载中...

Sea of Nodes(节点之海)是一种编译器中间表示设计,由 Cliff Click 在 1990 年代提出:不再以「基本块内指令线性排列」的传统 CFG 组织程序,而是把控制流与数据流统一为一张图——每条指令是节点,依赖是边,指令不固定属于某个基本块,只受依赖关系约束「漂浮」在图中。
表示天然是 SSA;许多优化(全局值编号、常量传播、死代码消除)在图上成为局部改写,无需显式跨块分析,指令可自由调度到最优位置(全局代码移动)。代价是失去线性顺序,调试可视化困难,最终仍需「调度」阶段把节点安放回基本块。
HotSpot 的 C2 服务端编译器是最早的工业实现;V8 的 TurboFan 亦采用该设计(其后继 Turboshaft 转回基于 CFG 的表示);Graal 编译器同样使用带控制流的节点图。
Sea of Nodes 是激进优化编译器的经典架构,其取舍(优化便利对工程复杂度)至今仍是编译器社区的活跃议题。

登录 后参与讨论
暂无讨论,来发表第一条评论吧