v8
文章平均质量分 92
Jtag特工
代码和人工智能老兵
展开
-
JavaScript的字节码 - v8 Ignition指令
JavaScript的字节码 - v8 Ignition指令前面的文章我们介绍了在js的AST层次的各种操作手段。AST操练熟练了之后,就差一步就可以执行了,那就是转换成中间代码,或者是解释型的字节码,或者是为编译器准备的IR.我们以v8为例,首先看下v8的运行架构:这个图中有三个不熟悉的专有名词,ignition, crankshaft和Turbofan。其中,Ignition是v8的解释器,crankshaft是老一代的编译器,turbofan是较新一代的编译器。所以我们所说的字节码就对应于i原创 2021-12-08 22:51:35 · 2168 阅读 · 0 评论 -
v8字节码的编译过程
v8字节码的编译过程前面的文章中我们学习了调用V8 API的方法。本文我们讲解一下v8编译成字节码的主要过程。我们来看一张编译的全局地图:API调用部分我们知道,v8中编译代码的方法是v8::Script::Compile: v8::Local<v8::Script> script = v8::Script::Compile(context, source).ToLocalChecked();这将会调用api.cc中的Compile:MaybeLo原创 2021-12-21 21:28:00 · 1564 阅读 · 0 评论 -
V8中的日志
V8中的日志通过前面的文章,我们知道如何编译v8. 下一步即将开始我们修改v8之旅。在修改之前,我们看下v8中如何改日志。为了提升性能,v8默认是不打印日志的,我们可以通过设置d8参数的方式打印日志到文件,默认写到v8.log文件中。为了达到日志丰富度和性能的平衡,打印日志的参数也有好几种。最小级别日志最小的级别是--log.我的v8打印的内容如下:v8-version,9,7,37,0,0v8-platform,macos,macosnew,CodeRange,0x3a83000000原创 2021-12-17 18:59:52 · 917 阅读 · 0 评论 -
将v8变成工具
将v8变成工具如何嵌入一个v8引擎到你的应用中v8除了可以作为一个独立的js引擎之外,还可以通过库的方式嵌入到我们的应用中,它以V8 API的方式服务我们。我们来看一个老一点的例子来看看v8 API是如何使用的:#include <stdio.h>#include <stdlib.h>#include <string.h>#include "include/libplatform/libplatform.h"#include "include/v8.h"原创 2021-12-14 11:50:28 · 1340 阅读 · 0 评论 -
v8世界探险(2) - 词法和语法分析
上节我们学习了API的概况,这节开始我们就循着API来分析实现。 对于解释器或者编译器来说,我们第一个感兴趣的当然是编译的过程。原创 2016-11-09 21:09:07 · 2081 阅读 · 0 评论 -
v8世界探险(3) - v8的抽象语法树结构
v8的抽象语法树结构原创 2016-11-12 16:55:02 · 1685 阅读 · 0 评论