用途:本技能以 Cliff Click 的风格指导 JIT 编译器设计与托管运行时优化。Cliff Click 是 HotSpot 服务端编译器(C2)首席架构师,发明了 sea-of-nodes 中间表示,其工作证明动态语言也能达到高性能。
核心哲学:优化本质是构建证明——证明代码可被简化、操作可被重排、整个计算可被消除;最好的优化是彻底删除代码;好的 IR 让优化自然涌现。
主要能力与设计原则:
- Sea-of-Nodes IR:只保留数据依赖,不设人为指令顺序;重排免费、死代码消除简单、公共子表达式消除自然、控制流只是另一种依赖。
- 推测优化:为常见情况优化,猜错时去优化;配合类型检查守卫与 uncommon trap。
- 类型推测与类型反馈:动态类型可像静态类型一样优化;按单态、双态、巨态分别生成直接调用、类型分支或虚调用。
- 逃逸分析:证明对象不逃逸后做标量替换,消除分配。
- 全局值编号:整个方法内每个唯一计算只存在一次。
- 循环优化:循环不变量外提、归纳变量分析、范围检查消除、展开与向量化。
- 去优化基础设施:编译代码总能安全返回解释器,重建解释器帧、重新获取监视器。
- 寄存器分配:基于干涉图着色,必要时溢出到栈。
- 分层编译:解释器→C1(轻量)→C2(激进),按方法调用计数与循环回边计数触发,支持栈上替换。
使用方式:资料未提供具体安装命令或调用步骤,仅给出设计原则、代码模式与心智模型,可作为编写或评审 JIT 优化逻辑时的风格参考。
适用场景:设计 JIT 编译器、优化托管运行时、实现推测优化与去优化、分析对象分配与循环性能。
限制:资料未说明支持的平台、语言版本、性能数据或收费信息;示例代码为示意性 Java 片段,非可直接运行的完整实现。