我用反汇编程序选项编译了v8:
tools/dev/v8gen.py x64.debug -- v8_enable_disassembler=true v8_enable_object_print=true
ninja -C out.gn/x64.debug
但是,当我尝试打印反汇编时,d8不会输出任何内容(也没有错误消息):
./d8 --print-code test.js
test.js包含以下内容:
function add(a, b){
return a + b;
}
最佳答案
V8延迟地编译函数(即首次调用它们时),因此当文件仅包含function add(...) {...}
时,这就是为什么看不到任何输出的原因之一。尝试添加通话,例如add(1, 1)
。
同样,最新版本的V8使用字节码解释器,而不是立即生成机器代码。您可以使用--print-bytecode
打印字节码。
机器代码仅在函数“热”后才由优化编译器生成(对于测试中的add
这样的小函数,这意味着调用它数千次); --print-opt-code
打印优化的机器代码。
(附带说明:在V8的Debug版本中,始终启用反汇编程序支持,因此您不需要任何自定义标志。)
关于javascript - V8不会打印出反汇编,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48391096/