V8引擎执行原理

news2024/10/7 20:25:23
  • v8是C++编写的Google开源高性能JavaScript和WebAssembly引擎,它用于Chrome和Node.js等。  

  • 它实现ECMAScript和WebAssembly。

  • v8可独立运行,也可嵌入到任何C++应用程序中。


parse模块

  • parse模块会将JavaScript代码转换成AST(抽象语法树),因为解释器并不直接认识JavaScript代码;

  • 如果函数没有被调用,那么是不会被转换成AST树的;

  • 官方文档:Blazingly fast parsing, part 1: optimizing the scanner · V8


lgnition

  • lgnition是一个解释器,会将AST转换成ByteCode(字节码);

  • 同时会收集TruboFan优化所需的信息(比如函数参数的类型信息,有了类型才能进行真是的运算);

  • 如果函数只调用一次,lgnition会解释执行ByteCode;

  • lgnition的v8官方文档:Firing up the Ignition interpreter · V8


TurboFan

  • TurboFan是一个编译器,可以将字节码编译为CPU可以执行的机器码;

  • 如果一个函数被多次调用,那么就会被标记为热点函数,那么就会经过TurboFan转换成优化的机器码,提高代码执行的性能;

  • 但是,机器码实际上也会被还原为ByteCode,这是因为如果后续执行函数的过程中,类型发生了变化(比如sum函数原来执行的是number类型,后来执行变成了string类型),之前优化的机器码并不能正确处理运算,就会逆向的转换成字节码;

  • TurboFan的v8官方文档:Digging into the TurboFan JIT · V8


V8引擎解析图

textap · GitHubtextap has 3 repositories available. Follow their code on GitHub.https://github.com/textap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[LeetCode周赛复盘] 第 340 场周赛20230409

[LeetCode周赛复盘] 第 340 场周赛20230409 一、本周周赛总结二、 6361. 对角线上的质数1. 题目描述2. 思路分析3. 代码实现三、6360. 等值距离和1. 题目描述2. 思路分析3. 代码实现四、6359. 最小化数对的最大差值1. 题目描述2. 思路分析3. 代码实现五、 6353. 网格图中最少访…

【排序】排序这样写才对Ⅰ --插入排序与选择排序

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

Axios请求(对于ajax的二次封装)——Axios请求的响应结构、默认配置

Axios请求(对于ajax的二次封装)——Axios请求的响应结构、默认配置知识回调(不懂就看这儿!)场景复现核心干货axios请求的响应结构响应格式详解实际请求中的响应格式axios请求的默认配置全局axios默认值(了解…

Debug | wget 的安装与使用(Windows)

!wget -nc http://labfile.oss.aliyuncs.com/courses/780/WeatherData.zip 报错信息: wget 不是内部或外部命令,也不是可运行的程序或批处理文件。 分析: 在jupyter notebook中做机器学习时导入数据使用!wget遇到了这个问题,查到…

轻松上手git代码版本管理工具--协同开发-冲突解决、线上分支合并以及使用pycharm操作git

一、协同开发 多人合作开发一个项目---->多人公用一个远程仓库 以后台项目为例: git init # git管理设置忽略文件.gitignore git add .git commit -m 第一次提交,写完了首页功能远程新建一个远程仓库(空) 创建一个origin git remote add origin git@gitee.com:xx…

穿戴规范智能识别系统 yolov7

穿戴规范智能识别系统通过yolov7python网络模型AI深度视觉学习算法,穿戴规范智能识别系统对工厂画面中人员穿戴行为自动识别分析,发现现场人员未按照规定穿戴着装,立即抓拍告警。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c…

垃圾满溢检测系统 yolov5

垃圾满溢检测系统通过pythonyolov5网络模型技术,垃圾满溢检测系统对控画面中小区内的垃圾桶进行7*24小时不间断监控,发现垃圾桶溢满周围有堆积物立即触发预警推送给相关人员处理。YOLOv5中在训练模型阶段仍然使用了Mosaic数据增强方法,该算法…

kubeadm方式部署k8s最新版本V1.26.2

Kubernetes核心概念 Master主要负责资源调度,控制副本,和提供统一访问集群的入口。--核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿…

测试7年,去过阿里也去过小公司,给你们年轻人一个忠告...

你眼中的软件测试岗位是怎样的?大部分人可能会给出这样的回答:“测试?简单啊,没什么技术含量,无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现,麻烦点的就是测试下部署安装是否出现兼容性问…

分布式事务Seata原理

Seata 是一款开源的分布式事务解决方案,致力于提供高性能与简单易用的分布式事务服务,为用户提供了 AT、TCC、SAGA 和 XA 几种不同的事务模式。Seata AT模式是基于XA事务演进而来,需要数据库支持。AT 模式的特点就是对业务无入侵式&#xff0…

【故障定位】基于多元宇宙算法的主动配电网故障定位方法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LeetCode 37. 解数独

一、题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图&#x…

如果重回大学时光

目录如果重回大学时光1. 多参加社团活动,结交更多的朋友2. 认真考虑专业分流方向3. 根据兴趣和能力选择适合自己的出路4. 为未来做好准备,规划职业发展如果重回大学时光 当前我是一名普通的码农,还有几个月,又将有一批大学生将毕…

vue实现美观大方的动漫、cos、帖子类型网站

一、先上效果图 1.项目demo预览:点击预览 参照半次元的榜单-绘画榜、榜单-COS榜、榜单-写作榜、个人中心、登录注册页面,导航栏等,分别实现页面排版、数据交互、基础框架布局搭建以及自定义vue组件合理的封装及使用。在vue项目开发过程中&a…

梦中情树---二叉树

前言: 今天就来讲树的一种特殊结构---二叉树 当然先来给大家看一张图片 看到这棵树了吗?它从根开始,每个结点都有且仅有两个分支,这个结构就是我们的二叉树。 其实我们上次讲的堆也可以看成一棵二叉树,但是人家的本质…

【python】Jupyter的使用(python代码编辑器)

文章目录一、Jupyter的介绍1、Jupyter是什么?2、Jupyter有什么独特之处?二、Jupyter的安装1、首先要下载python2、用pip命令下载Jupyter三、Jupyter的使用1、运行Jupyter2、简要介绍Jupyter的使用方法3、快捷键的使用四、总结一、Jupyter的介绍 1、Jupy…

安卓系统软键盘初步分析

初步分析的相关日志 复现log: 11-05 14:01:24.768 7991 7991 V InputMethodManager: onViewClicked: true 11-05 14:01:24.768 7991 7991 D InputMethodManager: showSoftInput() viewandroidx.appcompat.widget.AppCompatEditText{bd0acc9 VFED..CL. .F.P..ID 0,0-900,9…

C# 基础:创建、数据类型转换、基本运算符、

VS 快捷键 Ctri K D 代码整理 Ctri KM O 代码收缩 Ctri J 弹出提示 halcon 窗体应用 添加在线第三方库 右键项目名 --> 管理NuGet程序包 halcon 界面,创建选择 添加halcon离线动态链接库 右键引用 --> 添加引用 --> 选择动态链接库 .dll文件 导入…

22勤于思考:gRPC都有哪些优势和不足?

如果你能从专栏的开篇词开始读到这篇文章并且能够在过程中认真思考,那么我相信你目前已经能够对gRPC有了较为充分了解。在专栏的最后几节中,我们抽出一篇文章。来探讨一下gRPC有哪些优势和不足,因为只有这样我们才能取其精华,去其糟粕,学习gRPC框架设计的优点,还能反观出…

NLP领域顶级会议和期刊汇总(附CCF最新推荐目录)

研究NLP需要关注学术界or大厂AI Lab最新的科研动态,了解技术发展的趋势,写论文才能下笔如有神。找到了论文就能找到要复现的代码和要用到的数据集。 掌握科研动态也有助于提早做好产品规划以及技术预研。 对于NLPer而言,了解科研动态最好的方…