chrome_v8_js引擎源码导读分析.pdf

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档