从节点转储v8 JIT输出

sli*_*eed 13 javascript jit v8 node.js

node.js(或其他v8接口或v8的包装器)可以从v8 JIT输出生成的程序集吗?

我想看看生成的程序集对于各种代码段的样子.

Vya*_*rov 23

您需要确保在启用V8反汇编程序的情况下构建node.js.默认情况下,调试版本将启用它.对于发布版本(在最近使用GYP构建的节点中),您可以通过执行以下操作来启用它:

GYP_DEFINES="v8_enable_disassembler=1 v8_object_print=1" ./configure
Run Code Online (Sandbox Code Playgroud)

和重建节点.

当反汇编启用,您可以使用标志一样--print-code,--print-code-stubs,--print-opt-code--code-comments检查出的由V8生成的代码.

如果您想研究优化编译器使用所使用的IR --trace-hydrogen并查看hydrogen.cfg(可以使用C1 Visualizer查看).