V8是如何执行一段JavaScript代码的
AST是一种非常重要的数据结构
Babel的原理就是将ES6/7的源码转化为AST,将AST转化为ES5的AST,最后生成JavaScript目标代码
ESLint也是检查代码的AST结构
V8是如何执行一段JavaScript代码的
一. 生成AST和执行上下文
分词,词法分析,将源代码拆分成一个个不能再细分的单元——token
解析,语法分析,将上述的token根据语法规则生成AST
有了AST后,V8会生成该段代码的执行上下文
二. 生成字节码
解释器Ignition将AST生成字节码,并解释执行字节码。
一开始的V8室没有字节码的,是直接将AST转化为机器码,由于执行的是机器码,效率很高,这种方式在发布后效果非常好,但是随着移动互联网的普及,内存问题暴露无遗。机器码需要占用大量的空间,所以移动设备的内存容量告急。
字节码需要通过解释器将其转换为机器码后才能执行。
三. 执行代码
通常,第一次执行的字节码,解释器Ignition会逐条解释并执行,在执行过程中,如果发现热点代码,则后台编译器TurboFan将该段字节码编译成机器码,当再次执行该片段的时候,就执行机器码。
参考:《浏览器的工作原理和实践》
相关推荐
帕尼尼 2020-10-30
玫瑰余香000 2020-10-12
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23