定位对应的未经过V8优化的JS代码源

locate corresponding JS source of code which is not optimized by V8

我尝试优化 node.js 应用程序的性能,因此我正在分析 V8 的 JIT 编译器的行为。

当 运行 通过 node --trace_deopt --trace_opt --code_comments --print_optcode ... 应用程序时,输出包含许多重复行,如下所示:

[didn't find optimized code in optimized code map for 0x490a8b4aa69 <SharedFunctionInfo>]

如何找出javascript代码对应0x490a8b4aa69

完整输出可用here

该错误消息曾经出现在 v8/src/objects.cc 的第 10200 行附近,但现在已经不存在了。这基本上意味着当前没有对特定轨迹进行优化。可能是因为它未被使用,或者使用频率不高。它可能是一个 Node.js 库函数。提供的地址在内存中。您必须将调试器附加到 v8 并在该位置加载 SharedFunctionInfo 的符号。也可能在生成消息的行上设置断点。

我不认为知道什么没有优化是有用的,因为有很多东西没有得到优化......只需从 --trace_opt 中获取输出并假设其他一切不是。这只是一个提示,表示已对优化代码执行检查,none 是时候了。也许尝试 --trace_codegen 并向后工作。

这看起来是一个非常耗时的研究。
Thorsten Lorenz 会问这个问题。