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
)然后创建一个基于栈分配的 HandleScope(在这里须得说明在v8 中任何一个对象都是需要 handle 来指向的,如果没有则这个对象将很快被垃圾回收器回收掉
对象的释放意味做 handle 将没有用,因此在每一个 v8 逻辑层次中都有一个 HandleScope来管理该层次中的所有 handle
释放一个 scope, 则这个 scope 中的所以 handle 就被释放掉了)
)创建一个新的执行环境(即为 v8 执行 js 的环境,在创建该全局执行环境的同时,创建全局的对象模板,函数模板,编译 built_infunction(详细情况请见第二章 v8 之环境配置及初始化)
进入该新建的全局执行环境中(所谓进入该环境变量就是设置当前 isolate 中执行的环境变量)
)然后就是编译执行*
js 用户代码
a) 首先进行语法分析,建立语法树
b) 首次执行采用 full