阅读更多
Mozilla 的猴子家族迎来新成员,开发人员宣布为长时运行 JavaScript 程序设计的 JIT(即时编译)解析器 IonMonkey 初步完成。

Mozilla 开发人员David Anderson 在博客中表示Firefox 的 JavaScript 引擎 SpiderMonkey 一直以来所用的 JIT 技术(包括老的 TraceMonkey 和新的 JagarMonkey)都是直接将 JavaScript 翻译成机器码。相比 C++ 或者 Java 等生产环境编译器,这都缺失了一个全局性优化的环节。

新开发的 IonMonkey 则引入了一个中间层,其工作流程如下:

  • 将 JavaScript 翻译成中间表示层 IR(Intermediate Representation)
  • 使用各种算法对 IR 进行优化
  • 将优化过的 IR 翻译成机器码
特别值得一提的是,IonMonkey 在设计之初已经充分考虑了平台抽象化,现在已经实现对 x86、x86_64 和 ARM 指令集的支持。

David Anderson 会在接下来的博客中详细描述在第二步中应用的优化算法,感兴趣的朋友可以跟进。目前有:

  • Loop-Invariant Code Motion (LICM) 循环外无用代码移除。
  • Sparse Global Value Numbering (GVN) 冗余代码移除。
  • Linear Scan Register Allocation (LSRA) 寄存器分配规划,也被用于 HotSpot JVM 和 LLVM 中。
  • Dead Code Elimination (DCE) 无用指令移除
  • Range Analysis 范围分析,移除不必要的边界检测
显而易见的这些优化需要付出一定的时间代价的,所以仅在长时运行的 JavaScript 中应用,短时的 JavaScript 的 JIT 任务依然还是交给 JagarMonkey 完成。

根据 Mozilla 自己 Kraken 的测试,IonMonkey 带来了 26% 的性能提升。

目前 IonMonkey 已经应用于 Firefox Nightly 版本中,将随着 Firefox 18 的发布而投入广泛使用。Firefox 18 Beta 版本将在 11 月 20 日发布。

Via Ars Technia
来自: LinuxTOY
3
1
评论 共 3 条 请登录后发表评论
3 楼 allenny 2012-09-14 11:40
ray_linn 写道
那不就是个 javascript.net么

如果真是javascript.net,那C#离死期不远了
2 楼 achun 2012-09-14 09:24
ray_linn 写道
那不就是个 javascript.net么

javascript的历史比.net远久的多,而且现在就职于Mozilla,Mozilla的javascript实现永远都是紧跟最新标准,走在所有javascript实现之前的。(JIT不是标准之内的技术)
要说的是javascript和.net一毛钱关系都没有啊
1 楼 ray_linn 2012-09-13 23:08
那不就是个 javascript.net么

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics