电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

chrome_v8_js引擎源码导读分析

chrome_v8_js引擎源码导读分析_第1页
1/21
chrome_v8_js引擎源码导读分析_第2页
2/21
chrome_v8_js引擎源码导读分析_第3页
3/21
v8第一章 v8 之整体流程第二章 v8 之全局环境配置及初始化2.1 全局模板2.2 库函数2.3 初始化第三章 v8 之前端建立语法树3.1 v8 编译中重要的类3.2 compile 之前的查找3.3 建立语法树第四章 v8 之后端全代码生成(full codegenerator)第五章 v8 之后端优化代码生成(crankshaft)5.1 调用 crankshaft 的条件5.2 Hydrogen5.3 Lithium5.4 寄存器分配第六章 v8 之运行时监听(runtime profile)第七章 v8 之 LazyCompiler第八章 v8 之 inline cache8.1 前提条件及实现方式8.2 stubs 函数第九章 v8 之性能分析(各流程所占时间比)第一章 v8 之整体流程1.)v8 在进入 main 函数之后首先做的就是参数分析,根据参数设置 Flags。2.)然后创建一个基于栈分配的 HandleScope(在这里须得说明在v8 中任何一个对象都是需要 handle 来指向的,如果没有则这个对象将很快被垃圾回收器回收掉。对象的释放意味做 handle 将没有用,因此在每一个 v8 逻辑层次中都有一个 HandleScope来管理该层次中的所有 handle。释放一个 scope, 则这个 scope 中的所以 handle 就被释放掉了)。3.)创建一个新的执行环境(即为 v8 执行 js 的环境,在创建该全局执行环境的同时,创建全局的对象模板,函数模板,编译 built_infunction(详细情况请见第二章 v8 之环境配置及初始化)。进入该新建的全局执行环境中(所谓进入该环境变量就是设置当前 isolate 中执行的环境变量)。4.)然后就是编译执行*.js 用户代码。a) 首先进行语法分析,建立语法树。b) 首次执行采用 fullCodegenerator 编译最外层框架代码,并开始执行。c) 运 行 遇 到 还 没 有 编 译 的function代 码 采 用RuntimeLazyCompile,并用 inline cache 技术将其他同名的对象指向该编译的代码。d) 若在运行到该同名对象时发生 CacheMiss(调用不匹配),则采用 ICMissLazyCompile 对调用的对象或函数进行编译(当然这里还有其他 IC 处理情况出现,比如 ICCompare 等等 stubsfunction 的处理)。e) 在整个代码运行处理的过程中,v8 还会创建一个监听线程(profile thread),该线程监听 function 的运行情况,收集类型信息,记录运行次数,记录 function 编译后的代码量等等,判断该 function 是否为 hot function。(运行次数>2, 类型信息收集比例>15%,代码量是否有<5*144,是否发生 IC_changed),达到 要 求 ...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

chrome_v8_js引擎源码导读分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部