一个新的 JIT 引擎,它将在下一个主要 PHP 版本中使用。现在它是一个真正的优化编译器,具有类似于 Java HotSpot 服务器编译器的中间表示,V8 也使用非常相似的 IR 和编译管道。
它为未来的改进奠定了基础,并消除了现有 PHP JIT 的许多低级细节。
它不再支持不同 CPU 的汇编代码,现在,PHP 只生成一个 IR,并将其传递给一个独立于 PHP 的 JIT 引擎。
旧的 JIT 实现将保留一段时间。
新 JIT 实现的主要优点
- 使用 IR 可以更好地优化和分配寄存器(生成的本地代码更高效)。
- 分配的可能性(由此产生的本地代码效率更高)
- PHP 不必关心大多数底层细节(不同的 CPU、调用约定、TLS 细节等)、
- 调用约定、TLS 细节等)
- 更容易实现对新目标的支持(如 RISCV)
- IR 框架将与 PHP 分开开发,并可能接受其他项目的贡献(新的优化、改进、错误修复)。
缺点
- JIT 编译速度变慢(这对于跟踪 JIT 几乎是不可见的,但对于函数 JIT 编译则是可见的)。
- 但 Wordpress 的功能 JIT 编译速度要慢 4 倍)。
IR Framework 作为 GIT 子模块包含在 PHP 中。
相关:
- 一个新的独立于 PHP 的IR JIT 框架,:主要基于 HotSpot 和 LuaJIT 的想法。这些想法和实用方法的结合使其变得更加简单并且速度显着加快(PHP 函数 JIT 每秒生成 15M 优化的本机代码,基于 LLVM 的 PHP JIT 完成相同的工作超过一分钟)。这个框架可以用于其他语言,同时实现对许多PHP VM特定事物的支持。