我使用反汇编选项编译了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;
}
答案 0 :(得分:2)
V8懒惰地编译函数(即首次调用它们时),因此当您的文件只包含Array(totalStars)
时,这就是您没有看到任何输出的原因之一。尝试添加通话,例如function add(...) {...}
。
此外,最新版本的V8使用字节码解释器而不是立即生成机器代码。您可以使用add(1, 1)
打印字节码。
机器代码只有在优化编译器生成后才会生成#34; hot" (对于测试中的--print-bytecode
这样的小函数,这意味着调用它几千次); add
打印优化的机器代码。
(旁注:在V8的Debug版本中,始终启用反汇编程序支持,因此您不需要任何自定义标记。)