V8引擎执行JS(函数)过程(详解)

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

V8引擎执行JS(函数)过程

JS代码执行阶段

在这里插入图片描述

  1. Parse阶段:Parse模块会将JavaScript代码转换成AST(抽象语法树),这是因为解释器并不直接认识JavaScript代码

  2. Lgnition阶段:Lgnition是一个解释器,会将AST转换成ByteCode(字节码)
    2.1、同时会手机TurboFan优化所需要的信息(比如函数参数的类型信息,有了类型才能进行真实的运算)
    2.2、如果函数只调用一次,Ignition会执行解释执行ByteCode

  3. TurboFan阶段:TurboFan是一个编译器,可以将字节码编译为CPU可以直接执行的机器码
    3.1、如果一个函数被多次调用,那么就会被标记为热点函数,那么就会经过TurboFan转换成优化的机器码,提高代码的执行性能
    3.2、但是,机器码实际上也会被还原为ByteCode,这是因为如果后续执行函数的过程中,类型发生了变化(比如sum函数原来执行的是number类型,后来执行变成了string类型),之前优化的机器码并不能正确的处理运算,就会逆向的转换成字节码

  4. 执行阶段: 字节码转变为计算机能看懂的二进制文件进行执行。(转变字节码有跨平台的作用&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值