【问题标题】:V8 will not print out disassemblyV8不会打印出反汇编
【发布时间】:2018-01-23 09:23:50
【问题描述】:

我用反汇编选项编译了 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;
}

【问题讨论】:

标签: javascript v8


【解决方案1】:

V8 会延迟编译函数(即首次调用它们时),因此当您的文件仅包含 function add(...) {...} 时,这就是您看不到任何输出的原因之一。尝试添加呼叫,例如add(1, 1).

此外,最新版本的 V8 使用字节码解释器,而不是立即生成机器码。您可以使用--print-bytecode 打印字节码。

机器代码仅在函数“热”时由优化编译器生成(对于像add 这样的小函数在您的测试中,这意味着调用它几千次); --print-opt-code 打印优化后的机器码。

(旁注:在 V8 的调试版本中,反汇编程序支持始终启用,因此您不需要任何自定义标志。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多