- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chrome_v8_js引擎源码导读分析
v8
第一章 v8之整体流程
第二章 v8之全局环境配置及初始化
2.1 全局模板
2.2 库函数
2.3 初始化
v8
第三章 之前端建立语法树
3.1v8编译中重要的类
3.2compile之前的查找
3.3 建立语法树
v8 (fullcodegenerator)
第四章 之后端全代码生成
v8 (crankshaft
第五章 之后端优化代码生成 )
5.1 调用crankshaft的条件
5.2Hydrogen
5.3Lithium
5.4 寄存器分配
v8 (runtimeprofile
第六章 之运行时监听 )
v8 LazyCompiler
第七章 之
v8 inlinecache
第八章 之
8.1 前提条件及实现方式
8.2stubs函数
v8 ( )
第九章 之性能分析 各流程所占时间比
v8
第一章 之整体流程
1.)v8在进入main函数之后首先做的就是参数分析,根据参数设
置Flags。
2.)然后创建一个基于栈分配的HandleScope(在这里须得说明在
v8中任何一个对象都是需要handle 来指向的,如果没有则这个对象
将很快被垃圾回收器回收掉。对象的释放意味做handle将没有用,因
此在每一个v8 逻辑层次中都有一个HandleScope 来管理该层次中的
所有handle。释放一个scope, 则这个scope中的所以handle就被释放
掉了 。)
3. ( v8 js
)创建一个新的执行环境 即为 执行 的环境,在创建该全
局执行环境的同时,创建全局的对象模板,函数模板,编译built_in
function( v8 )
详细情况请见第二章 之环境配置及初始化 。进入该新建
的全局执行环境中(所谓进入该环境变量就是设置当前isolate 中执行
的环境变量)。
4.)然后就是编译执行*.js用户代码。
a) 首先进行语法分析,建立语法树。
b) 首次执行采用fullCodegenerator编译最外层框架代码,并开始
执行。
c) 运 行 遇 到 还 没 有 编 译 的 function 代 码 采 用
RuntimeLazyCompile,并用inline cache 技术将其他同名的对
象指向该编译的代码。
d) 若在运行到该同名对象时发生CacheMiss(调用不匹配),则
采用ICMissLazyCompile 对调用的对象或函数进行编译(当然
这里还有其他IC 处理情况出现,比如ICCompare 等等stubs
function的处理 。)
e) v8
在整个代码运行处理的过程中, 还会创建一个监听线程
(profilethread),该线程监听function的运行情况,收集类型信
息,记录运行次数,记录function编译后的代码量等等,判断
该function 是否为hot function。(运行次数2, 类型信息
文档评论(0)