JavaScript
文章平均质量分 90
Horky
爱探索、爱技术!简单地快乐着!
展开
-
JavaScriptCore内存分配的战争
原文来自:http://webkit.sed.hu/content/war-allocators-javascriptcore-another-participant由zoltan.horvath发表于02/22/2010,虽然现在的状况已经不同了,但还是有一定的参考价值。 世界上有很多的自定义内存分配库,让我们尝试下另一个后起之秀,它就是DLMalloc, 由Doug L翻译 2012-06-01 00:32:49 · 4622 阅读 · 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转载 2013-05-01 21:16:28 · 2234 阅读 · 0 评论 -
JavaScriptCore, WebKit的JS实现(一)
目前,JavaScript的实现已经成为编译领域的一个重要组成部分。主要包括Google的V8, Mozilla的SpiderMonkey, 还有Webkit使用的JavaScriptCore。 jsc:WebKit的JS引擎( js for webkit)JavaScriptCore (JSC)正是WebKit的JavaScript实现。 起初,JavaScriptCore是翻译 2012-08-21 01:03:36 · 11408 阅读 · 1 评论 -
JavaScript核心指南 (ECMA-262-3)
本文非常详细的说明了JavaScript的核心概念,也是理解JavaScript解释器的重要基础。中文版本可以看这里,但不一定是最新的内容。所以下面放了英文版本供学习使用。原文地址点这里。This note is an overview and summary of the “ECMA-262-3 in detail” series. Every section conta转载 2013-05-11 07:50:49 · 5562 阅读 · 0 评论 -
JavaScrip中闭包概念的探讨
初学闭包时一直以为很简单。但伴随对一个问题深入学习后,才算真正理解了闭包,同时也发现连>中都些不准确的地方。转载请注明出处:http://blog.csdn.net/horkychen 我不准备从头介绍闭包的概念,而是在下面列了几份参考资料。其中以【参考2】最为简洁,本文也是因文中的习题而引出进一步的探讨。 从[参考2]最后提出的习题开始(应该来自> 7.2),期望下面的程序可原创 2012-06-13 22:10:03 · 3099 阅读 · 2 评论 -
为什么V8引擎这么快?
转载请注明出处:http://blog.csdn.net/horkychenGoogle研发的V8 JavaScript引擎性能优异。我们请熟悉内部程序实现的作者依源代码来看看V8是如何加速的。作者:Community Engine公司研发部研发工程师Hajime MoritaGoogle的Chrome中的V8 JavaScript引擎,由于性能良好吸引了相当的注目。它是G翻译 2012-07-18 23:47:01 · 66092 阅读 · 10 评论 -
[WebKit] JavaScriptCore解析--基础篇(三)从脚本代码到JIT编译的代码实现
前面说了一些解析、生成ByteCode直至JIT的基本概念,下面是对照JavaScriptCore源代码来大致了解它的实现。从JS Script到Byte Code首先说明Lexer, Parser和ByteCode的生成都是由ProgramExecutable初始化过程完成的。先在JSC的API evaluate()中会创建ProgramExecutable并指定脚本代码。然后传原创 2013-05-23 00:34:17 · 14504 阅读 · 0 评论 -
[WebKit] JavaScriptCore解析--基础篇(二)解释器基础与JSC核心组件
这一篇主要说明解释器的基本工作过程和JSC的核心组件的实现。作为一个语言,就像人在的平时交流时一样,当接收到信息后,包含两个过程:先理解再行动。理解的过程就是语言解析的过程,行动就是根据解析的结果执行对应的行为。在计算机领域,理解就是编译或解释,这个已经被研究的很透彻了,并且有了工具来辅助。而执行则千变万化,也是性能优化的重心。下面就来看看JSC是如何来理解、执行JavaScript脚原创 2013-05-15 08:18:05 · 8502 阅读 · 2 评论 -
[WebKit] JavaScriptCore解析--基础篇 (一)JSC与WebCore
先看一下官方的基本介绍,短短几句就塞满了关键字。SquirrelFish,正式名称是JavaScriptCore,包括register-based(基于寄存器的虚拟机), direct-threaded, high-level bytecode engine(字节码引擎).它使用基于内置copy propagation(复制性传播算法)的一次性编译器(one-pass compiler),原创 2013-05-12 00:02:47 · 15568 阅读 · 2 评论 -
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翻译 2012-08-23 00:07:46 · 10482 阅读 · 1 评论 -
应当避免的JavaScript编程问题
如果刚开始学习JavaScript,无论完全自己写程序,或者使用一些框架 (jQuery, Mootools, Dojo, YUI) ,下面这几个错误你必须要避免, 它们都是我学习JavaScript的经验之谈。等价比较(Equality Operator) JavaScript中有两个相等比较操作符.第一个就是两个等于号(==),它只比较值是否相等,而不关心数据类翻译 2012-07-23 22:08:13 · 2252 阅读 · 1 评论 -
[WebKit]为JavaScript Binding添加新DOM对象的三种方式及实作
转载请注明出处:http://blog.csdn.net/horkychen 一.基础知识首先WebKit IDL并非完全遵循Web IDL,只是借鉴使用。WebKit官网提供了一份说明(WebKitIDL),比如Web IDL称"operation”(操作), 而WebKitIDL称为"method"(方法), 另外Web IDL也不像WebKitIDL那样将属性和参数分开。原创 2012-06-06 22:34:10 · 13658 阅读 · 8 评论 -
为你的JavaScript内存性能做个体检
转载请注明来源:http://blog.csdn.net/horkychen因为JavaScript的语言特性决定了,它的内存管理更主要的是交给浏览器的JavaScript解释器来处理,这其中被广为人知是垃圾回收(Garbage Collection)机制。不过天生的限制使得JS使用的内存也需要加以控制,特别是现在使用HTML5的游戏对JS内存管理的要求也越来越高。目前很多的资料都是关注在原创 2012-06-23 00:20:18 · 3674 阅读 · 0 评论 -
剖析JavaScript中的原型(Prototype)
转载请注明出处:http://blog.csdn.net/horkychen上篇提到构造函数包含一个prototype是实现继承的关键,就是原型链的概念。在JavaScript中当使用构造函数创建一个对象时,如下面的图示(来自高级程序设计>>):JavaScript为建构函数生成一个原型(Prototype)指向原型对象,包含了所有实例共享的对象。而原型中也有一个constructor原创 2012-05-12 23:16:44 · 2843 阅读 · 0 评论 -
iOS上Web开发之远端调试
转载请注明出处:http://blog.csdn.net/horkychen浏览器上的Debugger,基本由JavaScript写成,有兴趣可以下个FireBug Lite研究一下。PC端Debug很方便,也有远程调试,手机上的浏览器也有支持,原理相同。今天下午了解了一下iOS上Safari上远端调试的资料,还挺多。归纳一下: 1. 工具 iWebInspector原创 2012-06-08 22:14:15 · 8344 阅读 · 1 评论 -
JavaScript的面向对象设计
转载请注明出处:http://blog.csdn.net/horkychen依据W3C School的定义,Javascript是面向对象的语言, 虽然没有类(class),但到处是对象. 可以理解只有定义而没有声明, 直接用就行. 其中的每个对象都可以理解为一组Key-Value的组合.附上W3C School的说明: 面向对象语言的要求 一种面向对象语言需要向开发者提原创 2012-05-12 00:27:57 · 3824 阅读 · 3 评论 -
两个JavaScript开发必知的利器
转载请注明出处:http://blog.csdn.net/horkychen之前有同事遇到了调试压缩Javascript代码的问题. 今天终于在Stack Overflow上发现了Charles, 用了Map Local功能,果然是神器. 虽然原理简单,就是一个Web Proxy, 当读取某个网页资源时, 使用本地文件替换掉原来的文件, 它确实是一个可以解决实际问题的功能. 特别针对压原创 2012-06-04 22:39:40 · 3308 阅读 · 0 评论 -
实作一个二维条码生成的Chrome插件
转载请注明出处:http://blog.csdn.net/horkychen360浏览器的团队确实做了一件好事,将Chorme开发文档翻译成了中文, 可以点击这里。我简单依据这个例子,做了一个二维条码的插件,默认将当前网页地址转为二维条码。 (*使用UC浏览器可以很方便用二维条码录入。)文件目录: 3个ICON文件: 16.png, 48.png, 128.png原创 2012-07-14 22:54:48 · 3263 阅读 · 0 评论 -
将Chrome Extension加到快捷菜单中
转载请注明出处:http://blog.csdn.net/horkychen接着上一篇Chrome插件的实作。Step 1. 修改manifest.json, a. 增加权限"contextMenus"和"notifications" contextMenus -> 表示插件要操作快捷菜单 notifications -> 表示插件将弹出消息通知 (处原创 2012-07-17 13:05:53 · 3639 阅读 · 1 评论 -
[WebKit] JavaScriptCore解析--高级篇(三) Register Allocation & Trampoline
Register Allocation对于一个JIT而言,寄存器分配对系统的消耗通常是一个瓶径。之前有Graph Coloring Allocators, Chaitin style等分配方式,现在要介绍的是DFG JIT使用的Linear Scan算法。其基本工作方式是将占用寄存器的变量根据生命周期长短排列出来,在使用时查看可以回收哪些寄存器加以利用。先看一些定义:•Live原创 2013-06-12 08:18:14 · 5570 阅读 · 2 评论