计算机基础实战课
彭东
网名 LMOS,Intel 傲腾项目关键开发者
19719 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
计算机基础实战课
15
15
1.0x
00:00/00:00
登录|注册

39|源码解读:V8 执行 JS 代码的全过程

你好,我是 LMOS。
前面我们学习了现代浏览器架构,也大致了解了浏览器内核的工作原理。在浏览器的内核中,V8 是一个绕不开的话题。在浏览器中,Chrome 的重要地位不用赘述,而 V8 不仅是 Chrome 的核心组件,还是 node.js 等众多软件的核心组件,所以,V8 的重要程度亦不用多言。
不过,V8 涉及到的技术十分广泛,包括操作系统、编译技术、计算机体系结构等多方面知识,为了带你先从宏观角度系统学习和了解 V8 项目,这节课我会从源码理解讲起,带你了解了 V8 执行 JS 代码的全过程。

如何阅读 V8 源码和搭建 V8 开发环境

前面两节课,我带你简单了解了 Chromium 和 Webkit 项目的目录结构,在这里我们继续看一下如何学习 V8 源码。
Chromium 项目中包含了可运行的 V8 源码,但是从调试的角度看,我们一般使用 depot_tools 来编译调试 V8 源码,它是 V8 的编译工具链,下载和编译代码都需要用到它,你可以直接点击 depot_tools bundle 下载。
解压后,我们需要将 depot_tools 工具添加到环境变量,注意这些操作需要你保证本机可以访问 Google 浏览器。
我们以 Mac 系统为例,添加到环境变量的代码命令如下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

V8 是 Chrome 浏览器和 node.js 的核心组件,负责执行 JavaScript 代码。本文从源码角度解读了 V8 执行 JavaScript 代码的全过程,包括搭建 V8 开发环境、V8 在运行时的表现、编译流程以及 V8 中的优化细节。文章详细介绍了词法分析、语法分析和字节码生成等步骤,并探讨了 V8 中的性能优化策略,如缓存机器码、热代码标记、优化编译器 TurboFan 等。通过代码示例和关键数据结构的解释,读者可以深入了解 V8 的内部工作原理。文章强调了学习开源项目的方法,建议读者从宏观视角了解项目结构和架构,然后逐步深入代码细节,关注重要过程和数据结构。整体而言,本文为读者提供了全面了解 V8 执行 JavaScript 代码过程的指南,同时也引发了对 V8 性能优化的思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 功夫熊猫
    老师可以开一门专门的编译器的课程吗?或者带我们写一门编译器也可以😊

    作者回复: 你的要求有点点高哦

    2022-11-16归属地:湖北
    3
    2
  • peter
    请问:V8的字节码和Java的字节码是相同的吗?或者说,是同一个标准吗?

    作者回复: 不同

    2022-10-31归属地:湖北
  • 苏流郁宓
    需要 win系统或者ubuntu等linux系统怎么运行测试v8,希望哪位大神分享下哦

    作者回复: 可以直接下载啊 有win和linux版本的

    2022-10-31归属地:湖北
  • WJYGRIT
    老师,你好,我想问下,能在xcode中断点调试v8源码吗? hello_world 我自己运行了好几遍, 就是不能断点调试。 也改了很多配置都不行,看网上说可以用 symbol, 但这个调试出来是汇编码。 在网上找了一大圈, 都没有相关的说明
    2023-09-23归属地:湖北
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部