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类型),之前优化的机器码并不能正确的处理运算,就会逆向的转换成字节码 -
执行阶段: 字节码转变为计算机能看懂的二进制文件进行执行。(转变字节码有跨平台的作用&