JS代码执行阶段

-
Parse阶段:Parse模块会将JavaScript代码转换成AST(抽象语法树),这是因为解释器并不直接认识JavaScript代码
-
Lgnition阶段:Lgnition是一个解释器,会将AST转换成ByteCode(字节码)
2.1、同时会手机TurboFan优化所需要的信息(比如函数参数的类型信息,有了类型才能进行真实的运算)
2.2、如果函数只调用一次,Ignition会执行解释执行ByteCode -
TurboFan阶段:TurboFan是一个编译器,可以将字节码编译为CPU可以直接执行的机器码
3.1、如果一个函数被多次调用,那么就会被标记为热点函数,那么就会经过TurboFan转换成优化的机器码,提高代码的执行性能
3.2、但是,机器码实际上也会被还原为ByteCode,这是因为如果后续执行函数的过程中,类型发生了变化(比如sum函数原来执行的是number类型,后来执行变成了string类型),之前优化的机器码并不能正确的处理运算,就会逆向的转换成字节码 -
执行阶段: 字节码转变为计算机能看懂的二进制文件进行执行。(转变字节码有跨平台的作用&

本文详细介绍了V8引擎执行JS代码的过程,包括Parse阶段(生成AST)、Lgnition阶段(解释字节码并收集优化信息)、TurboFan阶段(编译优化代码)以及执行阶段。在执行过程中,全局对象GO、执行上下文栈ECS、变量对象VO和激活对象AO等概念被提及,阐述了函数调用和上下文管理的机制。
最低0.47元/天 解锁文章
299

被折叠的 条评论
为什么被折叠?



