JS V8引擎执行过程

311 阅读1分钟
    本文章是对coderwhy JS高级中对v8引擎执行讲解的总结

1.官方图示

V8引擎执行过程(官方).png

    
    1.首先blink(内核/渲染引擎)将JS代码传递给V8引擎
    
    2.Stream将源码进行编码转换
    
    3.Scanner对转换的JS代码做词法和语法分析生成tokens,未使用(暂未使用)的代码生成的tokens进行
      PreParser(预解析), 只解析暂时需要的内容(函数名或者一些调用语句...),真正到调用时才会完全解析
    
    4.使用的(频繁使用的)代码生成的tokens经过Parser解析生成AST(抽象语法树)
    
    5.ignition(解释器)可以将AST(抽象语法树)解释生成字节码()
    
    

2.讲解图示

V8引擎执行过程.png

    
    1.JS代码经过词法分析语法分析生成token
    
    2.Parse解析token之后生成AST(抽象语法树)
    
    3.ignition解释AST生成字节码,同时收集类型调用等信息
    
    4.TurboFan对经常调用的函数标记为热点函数,该函数经过TurboFan将字节码直接转换机器码。
    
    5.如果后续该函数传递的类型发生变化,原来优化的机器码已经不能正确执行,将进行Deoptimization
      (反向优化)