谷歌 V8 JavaScript 引擎引入新解释器 Ignition

谷歌发布了新的JavaScript解释器Ignition,Chrome 53将在一些内存有限的Android设备上使用它。

谷歌资深软件工程师Ross McIlroy在一篇博文中探讨了构建Ignition的原因。

V8目前没有解释器。初始执行的JavaScript代码最先被解析,并编译成一个未优化的状态。解析器和编译器的协同工作机制会导致部分代码后续 解析两次、甚至是三次。总之,按照谷歌的说法,V8将33%的页面启动时间用在了解析和编译代码上。这也导致了大量的内存开销。

通过使用解释器,谷歌希望减少当前系统的内存使用。Ignition还是依赖于一个解析器,但JavaScript被编译成字节码,而不是原生代 码。McIlroy表示,“我们[使用Ignition]将代码编译成简洁的字节码,而不是编译成机器码,大大减少了结果代码。因此,我们可以减少系统的 内存使用,对于不常运行的函数而言尤其如此。”

由于字节码较小,所以可以编译全部源代码,而不用避免编译未使用的代码。也就是说,脚本只需要解析一次,而不是像当前的编译过程那样解析多次。

McIlroy还提供了一些技术细节:

Ignition解释器使用低级的、体系结构无关的TurboFan宏汇编指令为每个操作码生成字节码处理程序。TurboFan将这些指令编 译成目标平台的代码,并在这个过程中执行低级的指令选择和机器寄存器分配。Ignition是一个寄存器机,每个字节码都将其输入和输出指定为显式寄存器 寻址;它不是一个栈式机,每个字节码消费输入,并把输出推送到一个隐式栈上。

其他浏览器供应商已经将使用解释器作为第一个步骤。Mozilla的SpiderMonkey和微软的Chakra JavaScript引擎都是一开始就有解释器,而且它们都是连接到了一个两层的编译系统。

从Chrome 53(预计在9月初发布稳定版本)开始,内存为512MB或不足512MB的Android设备将开始使用Ignition。要想深入了解Ignition,请查看谷歌发布的设计文档。

文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-11-09 00:38:11

谷歌 V8 JavaScript 引擎引入新解释器 Ignition的相关文章

谷歌修补两处安全漏洞 升级V8 JavaScript引擎

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 据国外媒体获悉,全球搜索巨头谷歌公司发布了其新版Chrome浏览器软件,修补了存在其稳定版和β版中的两处安全漏洞.在新版的Chrome浏览器软件中有两处严重的安全漏洞目前已经得到修正. 在这些安全漏洞还没有得到修补之前,其中的一处漏洞能够允许恶意代码在Chrome沙盒中运行.第二处漏洞是由浏览器标签页处理过程中的内存崩溃造成的,能够被用来运行

Javascript 引擎工作机制详解_javascript技巧

Javascript 引擎工作机制 javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等,这些概念正是JS引擎工作的核心组件.这篇文章的目的不是孤立的为你讲解每一个概念,而是通过一个简单的demo来展开分析,全局讲解JS引擎从定义到执行的每一个细节,以及这些概念在其中所扮演的角色. var x = 1; //定义一个全局变量 x function A

Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎

Duktape是一个可嵌入的Javascript引擎,主要关注便携性和精简及紧凑性. Duktape很容易集成到C/C++项目: 添加duktape.c和duktape.h到您的build中,并使用Duktape API从C代码中,调用ECMAScript代码的功能,反之亦然. 主要特性: 嵌入式,便携,小巧:     200kB的代码     46KB RAM启动(X86,默认选项)     22KB RAM启动(X86,lowmem选项)     42kLoC源(不包括注释等)     可以

一起谈.NET技术,.NET平台上的JavaScript引擎

长久以来,在.NET平台上只能通过JScript.NET执行ECMAScript/JavaScript代码,但是该项目一直是.NET语言中的二等公民,甚至Mono中的对应项目也已经无人维护.不过在JScript.NET逐渐淡出人们视线的时候,.NET平台上也出现了一些新的JavaScript执行引擎,虽不完善,但值得关注. Jint是一个相对较早的纯托管代码实现的JavaScript执行引擎,基于MIT授权协议开源,它的目标是为.NET应用程序提供JavaScript代码的执行及互操作能力.您可

威胁预警通告 JavaScript引擎MuJS爆出堆栈溢出漏洞 请尽快升级最新版本

MuJS近日曝出多个堆溢出漏洞,绿盟科技给出的威胁预警级别为低级,这意味着影响较小,危害程度较小.修复方法请下载使用最新版本的MuJS: 1.使用git命令进行最新源码下载 "git clone git://git.ghostscript.com/mujs.git" 2.或到官网进行下载,链接如下https://github.com/ccxvii/mujs JavaScript引擎MuJS漏洞描述 Bug 697136 提交时间:2016年9月20日 POC及其详情见如下链接: htt

基于 C 语言的 JavaScript 引擎探索

和其他的 JavaScript 引擎一样,SpiderMonkey 不直接提供像 DOM 这样的对象,而是提供解析,执行 JavaSccript 代码,垃圾回收等机制.SpidlerMonkey 是一个在 Mozilla 之下的开源项目,要使用 SpiderMonkey,需要下载其源码,然后编译为静态 / 动态库使用. 要在自己的应用程序中使用 SpiderMonkey,首先需要了解以下三个核心概念: 运行时环境运行时环境是所有 JavaScript 变量,对象,脚本以及代码的上下文所存在的空间

iOS8允许三方应用使用Safari JavaScript引擎

据美国http://www.aliyun.com/zixun/aggregation/31646.html">媒体报道,当iOS7发布时,开发者发现他们带内置网络浏览器的应用,JavaScript性能无法达到与苹果自有的Safari浏览器相同的水平.这是因为苹果只允许自己的应用使用改进后的Nitro JavaScript引擎,第三方应用只能使用更低版本. 苹果Safari主管维基·穆尔利(Vicki Murley)6月3日在Twitter上称:"致一些淘气者:iOS和OS X上的

苹果设备上配备的Nitro JavaScript引擎惊人

在对三种运行iOS4.3的苹果设备进行测试后发现,苹果设备上配备的Nitro JavaScript引擎让Safari浏览器的性能变得更加惊人,在测试中完胜谷歌Nexus S和三星Galaxy Tab等竞争对手.这个测试结果让现有iOS消费者大为振奋,同时也刺激了很多即将购买第一台平板电脑但还没有做决定的用户.根据SunSpider JavaScript的测试结果,在iOS4.3的作用下,iPad 1已经可以完全满足那些主要进行网页浏览的用户.iPad 2将直接预装iOS 4.3.毫无疑问,iPa

Dreamweaver CS4 JavaScript的部分新特性

  除了界面上的改变,DreamWeaver CS4作为一个重要的里程碑版,还有许多更新,诸如:  * 针对 Ajax 和 JavaScript 框架的代码提示  * Adobe InContext Editing  * HTML 数据集  * Subversion 集成  * CSS 最佳做法等,更多可以查看官方的fetures页.这里我主要给您介绍一下关于JavaScript的部分新特性.  是在官方下载了DreamWeaver CS4的PreRelease版来测试,解压和安装没有什么太多要