V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
return0
V2EX  ›  Node.js

V8 v7.4 支持无 JIT 模式

  •  1
     
  •   return0 · 2019-03-14 10:07:01 +08:00 · 3598 次点击
    这是一个创建于 2088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

    公众号

    2 条回复    2019-03-14 10:39:59 +08:00
    mytry
        1
    mytry  
       2019-03-14 10:31:34 +08:00
    赞~ 就喜欢这种介绍脚本引擎的文章。
    return0
        2
    return0  
    OP
       2019-03-14 10:39:59 +08:00
    @mytry 谢谢滋瓷 我们会持续更新 V8 的更新,有兴趣可以关注我们
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:41 · PVG 17:41 · LAX 01:41 · JFK 04:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.