[WebKit] JavaScriptCore解析--高级篇(三) Register Allocation & Trampoline

Register Allocation 对于一个JIT而言,寄存器分配对系统的消耗通常是一个瓶径。之前有Graph Coloring Allocators, Chaitin style等分配方式,现在要介绍的是DFG JIT使用的Linear Scan算法。其基本工作方式是将占用寄存器的变量根据生命周期长短排列出来,在使用时查看可以回收哪些寄存器加以利用。 先看一些定义: •Live...
阅读(4343) 评论(2)

[WebKit] JavaScriptCore解析--基础篇(三)从脚本代码到JIT编译的代码实现

前面说了一些解析、生成ByteCode直至JIT的基本概念,下面是对照JavaScriptCore源代码来大致了解它的实现。 从JS Script到Byte Code 首先说明Lexer, Parser和ByteCode的生成都是由ProgramExecutable初始化过程完成的。先在JSC的API evaluate()中会创建ProgramExecutable并指定脚本代码。然后传...
阅读(11548) 评论(1)

[WebKit] JavaScriptCore解析--基础篇(二)解释器基础与JSC核心组件

这一篇主要说明解释器的基本工作过程和JSC的核心组件的实现。 作为一个语言,就像人在的平时交流时一样,当接收到信息后,包含两个过程:先理解再行动。理解的过程就是语言解析的过程,行动就是根据解析的结果执行对应的行为。在计算机领域,理解就是编译或解释,这个已经被研究的很透彻了,并且有了工具来辅助。而执行则千变万化,也是性能优化的重心。下面就来看看JSC是如何来理解、执行JavaScript脚...
阅读(5781) 评论(2)

[WebKit] JavaScriptCore解析--基础篇 (一)JSC与WebCore

先看一下官方的基本介绍,短短几句就塞满了关键字。 SquirrelFish,正式名称是JavaScriptCore,包括register-based(基于寄存器的虚拟机), direct-threaded, high-level bytecode engine(字节码引擎).它使用基于内置copy propagation(复制性传播算法)的一次性编译器(one-pass compiler),...
阅读(11401) 评论(2)

JavaScript核心指南 (ECMA-262-3)

本文非常详细的说明了JavaScript的核心概念,也是理解JavaScript解释器的重要基础。中文版本可以看这里,但不一定是最新的内容。所以下面放了英文版本供学习使用。 原文地址点这里。 This note is an overview and summary of the “ECMA-262-3 in detail” series. Every section conta...
阅读(4096) 评论(0)

Mark-and-Sweep Garbage Collection

This section presents the mark-and-sweep   garbage collection algorithm. The mark-and-sweep algorithm was the first garbage collection algorithm to be developed that is able to reclaim cyclic data s...
阅读(1704) 评论(0)

JavaScriptCore, WebKit的JS实现(完)

什么是method JIT? 什么是DFG JIT? JSC的DFG JIT与V8 Crankshaft相比有何优劣? JIT:一个方法式的JIT(a method jit) *关于method JIT,可以参考另一份档案。 关于解释器(interpreter)和堆栈(stack,也就是寄存器文件,register file)都是应用了方法式JIT(method JIT). 所谓简单方法JI...
阅读(8852) 评论(1)

JavaScriptCore, WebKit的JS实现(一)

目前,JavaScript的实现已经成为编译领域的一个重要组成部分。主要包括Google的V8, Mozilla的SpiderMonkey, 还有Webkit使用的JavaScriptCore。   jsc:WebKit的JS引擎( js for webkit) JavaScriptCore (JSC)正是WebKit的JavaScript实现。   起初,JavaScriptCore是...
阅读(9817) 评论(1)

应当避免的JavaScript编程问题

如果刚开始学习JavaScript,无论完全自己写程序,或者使用一些框架 (jQuery, Mootools, Dojo, YUI) ,下面这几个错误你必须要避免, 它们都是我学习JavaScript的经验之谈。 等价比较(Equality Operator)  JavaScript中有两个相等比较操作符.第一个就是两个等于号(==),它只比较值是否相等,而不关心数据类...
阅读(1878) 评论(1)

为什么V8引擎这么快?

转载请注明出处:http://blog.csdn.net/horkychen Google研发的V8 JavaScript引擎性能优异。我们请熟悉内部程序实现的作者依源代码来看看V8是如何加速的。 作者:Community Engine公司研发部研发工程师Hajime Morita Google的Chrome中的V8 JavaScript引擎,由于性能良好吸引了相当的注目。它是G...
阅读(56414) 评论(9)

将Chrome Extension加到快捷菜单中

转载请注明出处:http://blog.csdn.net/horkychen 接着上一篇Chrome插件的实作。 Step 1. 修改manifest.json,   a. 增加权限"contextMenus"和"notifications"      contextMenus -> 表示插件要操作快捷菜单      notifications -> 表示插件将弹出消息通知 (处...
阅读(2997) 评论(1)

实作一个二维条码生成的Chrome插件

转载请注明出处:http://blog.csdn.net/horkychen 360浏览器的团队确实做了一件好事,将Chorme开发文档翻译成了中文, 可以点击这里。 我简单依据这个例子,做了一个二维条码的插件,默认将当前网页地址转为二维条码。  (*使用UC浏览器可以很方便用二维条码录入。) 文件目录:   3个ICON文件: 16.png, 48.png, 128.png...
阅读(2626) 评论(0)

为你的JavaScript内存性能做个体检

转载请注明来源:http://blog.csdn.net/horkychen 因为JavaScript的语言特性决定了,它的内存管理更主要的是交给浏览器的JavaScript解释器来处理,这其中被广为人知是垃圾回收(Garbage Collection)机制。不过天生的限制使得JS使用的内存也需要加以控制,特别是现在使用HTML5的游戏对JS内存管理的要求也越来越高。 目前很多的资料都是关注在...
阅读(3333) 评论(0)

JavaScrip中闭包概念的探讨

初学闭包时一直以为很简单。但伴随对一个问题深入学习后,才算真正理解了闭包,同时也发现连>中都些不准确的地方。 转载请注明出处:http://blog.csdn.net/horkychen   我不准备从头介绍闭包的概念,而是在下面列了几份参考资料。其中以【参考2】最为简洁,本文也是因文中的习题而引出进一步的探讨。   从[参考2]最后提出的习题开始(应该来自> 7.2),期望下面的程序可...
阅读(2788) 评论(2)

iOS上Web开发之远端调试

转载请注明出处:http://blog.csdn.net/horkychen 浏览器上的Debugger,基本由JavaScript写成,有兴趣可以下个FireBug Lite研究一下。PC端Debug很方便,也有远程调试,手机上的浏览器也有支持,原理相同。 今天下午了解了一下iOS上Safari上远端调试的资料,还挺多。归纳一下:   1. 工具    iWebInspector...
阅读(7762) 评论(1)
20条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1528116次
    • 积分:17073
    • 等级:
    • 排名:第635名
    • 原创:221篇
    • 转载:30篇
    • 译文:47篇
    • 评论:375条
    微博/MSN/EMail

    新浪微博:Horky
    QQ:324014340
    Mail:horky.chen@gmail.com
    微信公众号 (聚焦软件开发):
    博客专栏
    最新评论