V8 v7.4 支持无 JIT 模式

2019-03-14 10:07:01 +08:00
 return0

V8 v7.4 支持执行 JavaScript,而无需在运行时分配可执行内存。

在 V8 默认的配置中,它严重依赖在运行时分配和改变可执行内存的能力。例如:TurboFan 优化编译器 及时为热 JavaScript 函数生成原生代码,还有大多数的 JS 正则表达式通过 irregexp 引擎 编译成原生代码。在运行时创建可执行内存是使 V8 快速运行的一部分因素。

但是在一些情况下不分配可执行内存运行 V8 是很有必要的:

一些平台(例如:iOS、智能电视、游戏控制台)需要禁止非特权应用对可执行内存的写权限,在此之前使用 V8 是无法实现的,而且禁止可执行内存的写权限能够减少应用的被攻击渠道。

V8 无 JIT 的新模式正是为了解决这些问题。你可以启动 V8 时使用 --jitless 选项来开启 无 JIT 模式。

它是如何运行的呢?本质上,V8 基于我们已经实现的技术切换到纯解释器模式( interpreter-only mode )。所有的 JS 用户代码通过 Ignition 解释器 运行,正则表达式模式匹配也同样被解释执行。WebAssembly 目前还不支持,但是也有可能被解释执行。V8 内建的函数仍然被编译成原生代码,只是它们不再是 JS 托管堆(managed heap)上的一部分,这要归功于我们最近的努力——把它们嵌入到 V8 的二进制文件中

最终,这些更改允许我们创建 V8 的堆,而不需要任何内存区域的可执行权限。

原文来自: FENews

3432 次点击
所在节点    Node.js
2 条回复
mytry
2019-03-14 10:31:34 +08:00
赞~ 就喜欢这种介绍脚本引擎的文章。
return0
2019-03-14 10:39:59 +08:00
@mytry 谢谢滋瓷 我们会持续更新 V8 的更新,有兴趣可以关注我们

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/544419

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX