写点什么

WebKit 小组宣布开发基于字节码的 JavaScript 解释器——SquirrelFish

  • 2008-06-12
  • 本文字数:665 字

    阅读完需:约 2 分钟

上周,WebKit 开发团队向外正式宣布他们正在为 WebKit 的 JavaScript 引擎开发一个新解释器--SquirrelFish。根据 WebKit 官方博客,SquirrelFish 的速度比之前的解释器快 1.6 倍”。

与之前的解释器使用遍历语法树的实现方式不同的是,SquirrelFish 的实现采用字节码。

遍历语法树实现方式存在的高代价问题,在 SquirrelFish 字节码引擎中基本都不存在。首先,一个字节码流能够精确描述执行程序所需的操作,编译成字节码实际上隐性地跳过了不相关的语法结构。其次,字节码调度程序只是一个简单地从内存中直接读取,转而间接调度分支程序的过程。因此,执行字节码指令要比访问语法树节点快得多。第三,由于不再需要语法树,解释器无需继续在语法树节点间传送执行状态。

解释器使用字节码之后能够直接从字节码解释的所有的优化中获益匪浅,这也意味着 SquirrelFish 的速度还会继续得到提升。

在解析器使用字节码之后,我们目前实现的编译时优化有: - 常量折叠(constant folding)

  • 更强的拷贝传播
  • 类型推断——包括精确和推测两种方式
  • 基于表达式上下文的特化——尤其是 void 和 boolean 上下文
  • 窥孔优化(peephole optimization)
  • 逃逸分析 (escape analysis)

SquirrelFish 团队特别对那些在同一领域工作的人们表示了感谢,正是他们的研究成果激发了 SquirrelFish 的开发灵感。

SquirrelFish 的设计很大程度上来自于高效虚拟机领域的一些最新研究成果,其中包括 M. Anton Ertl 教授、David Gregg 教授等人以及 Lua 编程语言的开发者们的研究。

查看英文原文: WebKit Team Announces SquirrelFish, a Bytecode Based JavaScript Interpreter

2008-06-12 16:141604
用户头像

发布了 88 篇内容, 共 273.9 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

大数据培训关于数据采集面试问题分享

@零度

数据采集 面试问题 大数据开发

半导体行业如何保持高效远程办公?因果集群(Causal Clustering)了解一下!

龙智—DevSecOps解决方案

远程办公 因果集群

自己动手写Docker系列 -- 5.8实现容器制定环境变量运行

Go Docker 4月月更

如何通过云效Codeup高效落地分支模式,提升开发协作率

阿里云云效

云计算 阿里云 版本管理 分支管理 分支模式

从Opentracing、OpenCensus 到 OpenTelemetry,看可观测数据标准演进史

阿里巴巴云原生

得物App H5秒开优化实战

得物技术

前端 H5 优化 实战 Web H5

TiDB 查询优化及调优系列(一)TiDB 优化器简介

PingCAP

通过质量内建,提高交付质量

老张

软件测试 质量内建 交付质量

react源码解析12.状态更新流程

buchila11

React

面试突击39:synchronized底层是如何实现的?

王磊

Java java面试

Docker容器简介、优缺点与安装

乌龟哥哥

4月月更

周日直播|OpenMLDB Pulsar Connector,高效打通实时数据到特征工程

Apache Pulsar

开源 架构 云原生 Apache Pulsar 消息中间件

java培训:怎样才能写出一个优秀的对外接口

@零度

JAVA开发 对外接口

去中心化钱包系统开发app,imtoken钱包平台搭建源码

Geek_56201b

#区块链# 源码搭建 去中心化钱包

如何在Unity中免费制作游戏

龙智—DevSecOps解决方案

Unity Perforce Helix Core

Atlassian应对CVE-2022-22963,CVE-2022-22965的常见问题

龙智—DevSecOps解决方案

Atlassian CVE-2022-22963 CVE-2022-22965

Jira 云产品宕机多日,业界热议上云如何保障数据安全

万事ONES

Atlassian Jira 研发管理工具 项目管理工具 企业研发管理

web前端培训学习需要掌握哪些 Linux 命令

@零度

前端开发

基于卷积神经网络的猫狗识别

Peter

机器学习 深度学习 tensorflow keras

企业如何进行信息化

秋去冬来春未远

数字化 信息化管理 如何信息化 信息化规律

react源码解析11.生命周期调用顺序

buchila11

React

云风:不加班、不炫技,把复杂的问题简单化

博文视点Broadview

EventBridge 特性介绍|以 IaC 的方式使用 EventBridge

阿里巴巴云原生

Android C++系列:C++最佳实践2抽象类

轻口味

c++ android 4月月更

jupyter notebook换皮肤

Peter

Python 机器学习 数据分析 Jupyter Notebook

[Day14]-[动态规划]四键盘问题

方勇(gopher)

LeetCode 数据结构与算法、

TypeScript基础学习

乌龟哥哥

4月月更

共探开源生态|Apache Pulsar 社区助力 Apache APISIX Summit Asia 2022

Apache Pulsar

开源 架构 云原生 Apache Pulsar Apache Pulsar 社区

Linux驱动开发-编写W25Q64(Flash)驱动

DS小龙哥

4月月更

Docker 实战教程之从入门到提高 (四)

汪子熙

Docker 容器 虚拟化 docker image 4月月更

低代码极简部署

源字节1号

低代码开发

WebKit小组宣布开发基于字节码的JavaScript解释器——SquirrelFish_Java_Nick Laiacona_InfoQ精选文章