`
wilent
  • 浏览: 38512 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

1. javascript v8 引擎基本流程

阅读更多

 

v8运行基本流程:

    

 

    上图来自: https://developers.google.com/v8/embed

行数 行说明 备注
第1 建立一个域,包含一组Handle对象,便于释放它们 handle:句柄提供了一个 JavaScript 对象在堆中位置的引用。V8 的垃圾收集器将把不再使用的对象的内存回收掉。在垃圾收集过程中,垃圾收集器经常吧对象移动到堆中的另外一个位置。当垃圾收集器移动一个对象时,垃圾收集 器会把所有的指向该对象的句柄更新为对象的新地址  .主要有两种类型,一个是Local,另一个是Persistent类,前者表示本地栈上的数据,所以比较轻,后者表示函数数据和对象的访问.
第2 Handle对象本身存放在栈上,而实际context对象保存在堆中 context:执行上下文,包含内置对象方法,如print方法等,还有js的内置库,如math;
第3

根据两个对象Isolate和Context来创建一个函数间使用的对象,

所以使用Persistent类来管理,这里展示的是它用处和含义,

在本例中不是必需的.

Isolate : v8引擎实例,包括相关状态信息,堆等,总之这是

一个能执行js代码的类;它不能被多线程同时访问,v8使用者可以使用创建多个该类实例;

第4

为Context对象创建一个基于栈的域,下面的执行步骤都是在该域中

对应的上下文来进行的

Scope:作用域可以看成handle容器,释放一个scope,包含在这个scope中的所有handle都会统一释放
第5 从命令行参数读入js代码,也是一段字符串  
第6 将代码字符串编译为v8内部表示,并保存为script对象 script:用于表示编译过的js源代码.
第7 执行编译后内部表示,然后获得生成结果  

 

 

 

 

 

 

FunctionTemplate:  用来运行时创建函数,在一个context中一个functionTemplate只能创建一个函数,该函数生命周期和context的生命周期相同,每个函数模板可以有属性,并且这些属性在创建函数的时候添加到该函数中,每个函数模板都有一个对应实例模板,用来以该函数构造器创建对象实例,每个函数模板还有一个prototype模板,用来创建函数原型对象,另外functionTemplate还可以继承来自另一个函数模板,子函数模板继承父模板的属性,并且通过__proto__可以访问父模板原型对象,

    ObjectTemplate: 运行时创建对象,向一个objectTemplate中添加properties就是向所有以该对象模板创建对象中添加这些属性,继承自Template

  • 大小: 56.1 KB
分享到:
评论

相关推荐

    【JavaScript源代码】详解JavaScript引擎V8执行流程.docx

    详解JavaScript引擎V8执行流程  目录 一、V8来源二、V8的服务对象三、V8的早期架构四、V8早期架构的缺陷五、V8的现有架构六、V8的词法分析和语法分析七、V8 AST抽象语法树八、字节码...V8引擎的命名是Google向用户展

    node-v18.19.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v14.19.1-x86.msi

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v16.19.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v16.19.1.tar.gz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v8.16.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v8.14.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v10.23.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v10.24.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v10.18.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v10.22.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v10.20.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.8.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.11.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.14.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.22.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.20.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.18.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.16.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

    node-v12.19.1.tar.xz

    它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如...

Global site tag (gtag.js) - Google Analytics