Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从节点转储v8 JIT输出_Javascript_Node.js_Jit_V8 - Fatal编程技术网

Javascript 从节点转储v8 JIT输出

Javascript 从节点转储v8 JIT输出,javascript,node.js,jit,v8,Javascript,Node.js,Jit,V8,node.js(或其他一些v8接口或v8包装器)能否从v8 JIT输出生成的程序集 我想看看生成的程序集对于各种代码片段是什么样子。您需要确保node.js是在启用V8反汇编程序的情况下构建的。默认情况下,调试版本将启用它。对于发布版本(在使用GYP build的最近足够多的节点中),您可以通过执行以下操作来启用它: GYP_DEFINES="v8_enable_disassembler=1 v8_object_print=1" ./configure 重建节点 启用反汇编程序后,您可以使用诸

node.js(或其他一些v8接口或v8包装器)能否从v8 JIT输出生成的程序集


我想看看生成的程序集对于各种代码片段是什么样子。

您需要确保node.js是在启用V8反汇编程序的情况下构建的。默认情况下,调试版本将启用它。对于发布版本(在使用GYP build的最近足够多的节点中),您可以通过执行以下操作来启用它:

GYP_DEFINES="v8_enable_disassembler=1 v8_object_print=1" ./configure
重建节点

启用反汇编程序后,您可以使用诸如
--打印代码
--打印代码存根
--打印选项代码
--代码注释
等标志来签出V8生成的代码


如果您想研究通过优化编译器使用的IR,请使用
--跟踪hydrogen
并查看
hydrogen.cfg
(可以使用C1 Visualizer查看)。

我尝试过这个方法,但它没有输出任何内容:
节点--expose debug as=d-e“函数f(){return 1;};d.debug.disassemploy(f)”
您是否想调查某个特定的代码片段?这些信息是否仍然是最新的?@OleksiiRudenko是的,大部分是。为什么?现在,node在发行版和调试()中都默认启用了反汇编程序。另外,我建议使用IRHydra()而不是C1可视化工具-但是其他所有的标志都是一样的。IRHydra看起来真的很酷!谢谢,很高兴知道我现在不需要重新编译节点。我想知道iHydra是否与Benchmark.js集成?我的意思是,它能从分析中排除无关的benchmark.js代码吗?直接从基准中捕获编译工件真的有意义吗?或者创建独立的示例有意义吗?@OleksiiRudenko不,它不排除任何东西-它不知道您正在查看的代码,实际上很难确定哪些相关,哪些不相关。第二个问题的答案取决于您正在查看的代码类型。在某些情况下,您需要单独的示例,在某些情况下(微型)基准测试提供了足够的数据-当您决定在如此低的级别上进行优化时,并没有通用的答案。