《Chrome V8 源码》34. 终级优化技术 Turbofan
1 摘要 Turbofan 是基于 Sea of Nodes 理论的优化编译,它是 V8 Compiler Pipeline 三个节点中的最后一个节点,此外还有 Ingintion 和 Sparkplug。 Turbofan 使 JavaScript...
Read More1 摘要 Turbofan 是基于 Sea of Nodes 理论的优化编译,它是 V8 Compiler Pipeline 三个节点中的最后一个节点,此外还有 Ingintion 和 Sparkplug。 Turbofan 使 JavaScript...
Read More1 摘要 本篇文章是 Builtin 专题的第八篇。本篇文章将跟踪 Bytecode 的执行过程,在该过程中讲解 Lazy Compile 的启动方式、工作流程以及重要的数据结构,同时也会介绍与 L...
Read More1 摘要 本篇文章是 Builtin 专题的第七篇。上篇文章讲解了 Builtin::kInterpreterEntryTrampoline 源码,本篇文章将介绍 Builin 的编译过程,在此过程中可以看到 Bytecode...
Read More前言 在上周末的深育杯线上赛中,遇到了一个挺有意思的题目,叫 HelloJerry,考察的是 JerryScript 引擎的漏洞利用。不过,由于比赛时间有限,因此比赛过程中并未解出来,赛后复现...
Read More1 摘要 本篇文章是Builtin专题的第六篇,讲解Ignition中的Builtin::kInterpreterEntryTrampoline源码。包括InterpreterEntryTrampoline、Runtime_InterpreterTraceByteco...
Read More1 摘要 本篇文章是Builtin专题的第五篇,讲解Ignition解释Bytecode之前需要做的准备工作,这些工作由一系列Builtin共同完成,工作内容包括:构建堆栈、压入参数等。本文通过分...
Read More1 摘要 本篇文章是Builtin专题的第五篇,详细分析Builtin的调用过程。在Bytecode handler中使用CallBuiltin()调用Builtin是最常见的情况,本文将详解CallBuiltin()源码和相...
Read More1 摘要 本篇文章是Builtin专题的第四篇,主要分析substring的源码。substring有两种实现方法,一种采用CSA实现,另一种采用Runtime实现。本文讲解CSA实现的substring方法以及...
Read More1 摘要 本篇文章是Builtin专题的第三篇,讲解Bytecode的执行、数据结构以及Dispatch。dispatchtable是连接Bytecode之间的纽带,它记录了每条Bytecode handler的地址,Ignitio...
Read More1 摘要 本篇文章是Builtin专题的第二篇,讲解Bytecode Handler的初始化过程以及相关数据结构。Bytecode handler是采用CAS方式编写的Builtin,它实现了Bytecode的功能,每一条...
Read More前言 接下来的几篇文章对Builtin做专题讲解。Builtin实现了V8中大量的核心功能,可见它的重要性。但大多数的Builtin采用CAS和TQ实现,CAS和TQ与汇编类似,这给我们阅读源码带...
Read More1 介绍 SharedFunction是一个包含BytecodeArray和stub_entry等信息的数据集合,该集合是V8编译器的输出结果,由SharedFunction类管理。 本文的组织方式:SharedFunction的内...
Read More1 摘要 本篇是编译链专题的第四篇,梳理V8编译期间涉及到的数据结构和自动机,并解释其作用。 2 Parse_Info 1. // A container for the inputs, configuration options...
Read More1 摘要 本篇是编译链专题的第三篇,详细讲解AST到字节码的转换过程。本文组织方式:字节码生成(章节2);延期常量池(章节3);编译收尾工作(章节4)。 2.字节码生成 把AST树翻译成字...
Read More1 摘要 本篇是编译链专题的第二篇,详细解释Javascript源码到Token,再到抽象语法树(AST)的转换过程。本文组织方式,词法分析器与Token(章节2);抽象语法树(章节3)。 2 词法分析器...
Read More1 摘要 第三、四、五三篇文章对V8编译流程的主要功能做了介绍,在基础之上,接下来的几篇文章是编译专题,讲解V8编译链,从读取Javascript源码文件开始,到字节码的生成,并结合前...
Read More1 摘要 Isolate是V8虚拟机的实例,它负责为Javascript源码创建执行环境,管理堆栈、编译、执行、context等所有组件。编译缓存(CompilationCache),是Isolate的核心组件,也是Isol...
Read More前言 我认为,汇编分析无疑是调试v8的终级武器,当用C++调试无法获取更详细的信息时,汇编分析是最好的帮手,但如果不研究v8字节码或挖漏洞等,此文也许没必要看。本文与第十篇文...
Read More前言 本系列的前十三篇文章,讲解了V8执行Javascript时最基础的工作流程和原理,包括词法分析、语法分析、字节码生成、Builtins方法、ignition执行单元,等等,达到了从零做起,...
Read More前言 本系列的前十三篇文章,讲解了V8执行Javascript时最基础的工作流程和原理,包括词法分析、语法分析、字节码生成、Builtins方法、ignition执行单元,等等,达到了从零做起,...
Read More前言 本系列的前十三篇文,讲解了V8执行Javascript时最基础的工作流程和原理,包括词法分析、语法分析、字节码生成、Builtins方法、ignition执行单元,等等,达到了从零做起,入...
Read More前言这几天师傅们都在提交 Goby 的 EXP,赶鸭子上架,一边研究一边写,也写出来几个,编写过程中遇到了很多问题,都记录了下来。这篇文章主要讲一些遇到过的坑及调试的问题,再通过一个...
Read Moredocument对象中有innerHTML、innerText这两个属性,都是获取document对象文本内容,但使用起来还是有区别的;区别1) innerHTML设置或获取标签所包含的HTML+文本信息(从标签起始位...
Read MoreJSshell是一个JavaScript反向Shell工具,该工具可以帮助广大研究人员远程利用XSS漏洞或扫描并发现XSS盲注漏洞。当前版本的JSshell支持在Unix和Windows操作系统上运行,并且同时...
Read More原创: Mr.zhang 合天智汇 0x00 正文 想了解什么是JavaScript可到合天网安实验室学习实验——Javascript基础,学习DOM操作和BOM操作,点击http://www.hetianlab.com/expc.do?ec...
Read More