【发布时间】:2016-03-16 17:34:24
【问题描述】:
在查看了最近宣布的对 WebAssembly 的支持后,我突然想到,如果有一些方法可以显着提高它的实用性:
让 TurboFan,the V8 JIT Crankshaft optimizer 的继任者输出它生成的所有汇编代码以及静态类型签名,以及生成的代码的执行配置文件。
允许程序员为覆盖优化器的特定静态类型签名提供自己的 asm.js/WebAssembly 代码。
有没有办法做到这一点?
有一些迹象表明它可能来自this article的以下段落:
在底层,V8 中的 WebAssembly 实现旨在 重用大部分现有的 JavaScript 虚拟机基础架构, 特别是 TurboFan 编译器。一个专门的 WebAssembly 解码器 通过检查类型、局部变量索引、函数来验证模块 引用、返回值和控制流结构在一个单一的 经过。解码器生成一个 TurboFan 图,由 各种优化通过,最后变成机器码 为优化的 JavaScript 生成机器代码的同一后端 和 asm.js。在接下来的几个月里,团队将专注于 通过编译器改进 V8 实现的启动时间 调整、并行性和编译策略改进。
为更广泛的受众扩展这个想法:
典型的自上而下的优化涉及高级编程,然后执行分析以确定哪些代码需要更多的努力。无论优化是自动代码生成还是优化代码的手动编码,都是如此。在动态类型语言的情况下,您经常希望超越优化动态类型算法并提供专门用于特定静态类型的代码。事实上,这就是 V8 JIT 优化器自动执行的操作。如果人们想手动提供一些特别“热门”的专门案例,他们需要以某种方式通知自动优化器他们已经完成了工作,以便自动优化器可以合并手动优化的代码,而不是自动生成次优代码。
【问题讨论】:
-
你能澄清一下你的意思吗?这听起来更像是 V8 团队的功能请求,而不是 SO 问题,但我不确定请求是什么 :-)
-
这是对 V8 团队的功能请求,如果该功能在 V8 中尚不可用。所以我的问题是这个功能是否已经存在——它似乎应该存在。我不确定如何更清楚我所说的。我使用的技术术语定义明确。您对其中的哪一个有疑问?
node --v8-options呈现了一个令人眼花缭乱的数组。
标签: v8 asm.js webassembly