TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
优化器
TypePHP 在语义分析阶段运行一组 SSA(静态单赋值)驱动的优化器,目标是减少运行时开销与生成的 C++ 体积。优化入口与 SSA 构建分别在 src/Optimizer/ 与 src/Analysis/SsaBuilder.php。
Sources: src/Optimizer/ · src/Analysis/SsaBuilder.php
优化器清单
| 类 | 作用 |
|---|---|
SsaBuilder |
构建 SSA 形式,为下游优化提供定义-使用链 |
SsaTypeOptimizer |
基于 SSA 的类型推导,传播确定类型以去除运行时 php::Var 装箱 |
SsaPropOptimizer |
属性类型的 SSA 推导与去虚化 |
FuncCallOptimizer |
函数调用优化(内联候选、已知函数特化等) |
LoopVarOptimizer |
循环变量类型/作用域优化 |
Sources: src/Optimizer/SsaTypeOptimizer.php · src/Optimizer/SsaPropOptimizer.php · src/Optimizer/FuncCallOptimizer.php · src/Optimizer/LoopVarOptimizer.php
与优化级别的关系
命令行 -O <level>(0–3)控制优化强度:级别越高,优化器介入越深、生成代码越紧凑,但编译期耗时也越大;-d/--debug 会关闭优化并加调试符号。
Sources: src/Translator.php · src/Translator.php
与类型系统的协同
SSA 类型优化直接消费 类型检查与兼容 的判定结果——一旦推导确认某变量是固定原生类型,生成器即可发射 php::Int 而非通用 php::Var,省去 zval 装箱。这是「原生类型优先」原则在运行期的落地。