js 引擎执行流程
Parser 将 js 源码转换为 AST,然后 Ignition 将 AST 转换为 Bytecode,最后 TurboFan将 Bytecode 转换为经过优化的 Machine Code(实际上是汇编代码)
// v8 5.9 启用了 Ignition 字节码解释器,启用字节码的考虑主要是希望能够减少机器码对内存空间的占用
// sm 生成中间码(被称为引擎前端)(由解释器执行),hot 代码被编译为机器码
v8 在 Ignition 和 TurboFan 之间添加了 Sparkplug:https://www.infoq.cn/article/EY2wGO19AtDvBCNNj88Y
非优化 js 编译器
- JS 调用约定在优化框架和解析框架之间共享
- 交给内置代码