我用反汇编程序选项编译了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/

10-11 11:47