How do I dig into under the hood of Google V8 JavaScript engine
2017-05-11 13:38
579 查看
1. Firstly, you should prepare some knowledge of dynamic compilation. If you have the knowledge of Java Virtual Machine, you are in good position but you need to prepare some new knowledge of compiler. Especially the concept of "Sea of Nodes" IR. You
can start from googling "combining Analyses, Combining optimizations - Summary", and then read Cliff Clicks thesis.
2. And then you should read the V8 design docs. Of course the best ones are from Google V8 engineering team.
3. The third step is of course to download V8 source code and try to play with it, like building, testing etc.
4. After playing with it, you are commended to scan through the source code. I did it by setting up the Eclipse environment and scan all the source codes under v8/src directory. At this stage, you are only expected to get a rough idea of those key classes,
and try to remember their names and their roles.
5. Now, try to understand the general execution sequence of running a simple JS file. I did it by generating a callgraph by using valgrind tool and get the visual call graph by kCachegrind.
can start from googling "combining Analyses, Combining optimizations - Summary", and then read Cliff Clicks thesis.
2. And then you should read the V8 design docs. Of course the best ones are from Google V8 engineering team.
3. The third step is of course to download V8 source code and try to play with it, like building, testing etc.
4. After playing with it, you are commended to scan through the source code. I did it by setting up the Eclipse environment and scan all the source codes under v8/src directory. At this stage, you are only expected to get a rough idea of those key classes,
and try to remember their names and their roles.
5. Now, try to understand the general execution sequence of running a simple JS file. I did it by generating a callgraph by using valgrind tool and get the visual call graph by kCachegrind.
相关文章推荐
- How JavaScript works: an overview of the engine, the runtime, and the call stack
- How do I get the name of an object's type in JavaScript
- How do I make my GUI plot into an axes within the GUI figure rather than inside of a new figure in M
- How to access the properties of an object in Javascript
- How do I get the reference count of a CLR object?
- How do I write a LINQ to Entities query which has the equivalent of the SQL “in” keyword?
- How does the certain version of a certain brower support the JavaScript Standard?(come from Javascript:The definitive guide, 4th
- Under the Hood of J2EE Clustering
- FW: How to spawn a process that runs under the context of the impersonated user in Microsoft ASP.NET pages
- How JavaScript works: an overview of the engine, the runtime, and the call stack
- In Delphi XE2 FireMonkey - How do i change the color of a button after pressing it
- How do I perform a manual full refresh instead of using the Apply program to do the full refresh?
- Under the Hood of J2EE Clustering
- ChipScope - For the ChipScope flows, how do you get the signal names into the Analyzer without manually adding them?
- CIL Programming: Under the Hood of .NET
- How to spawn a process that runs under the context of the impersonated user in Microsoft ASP.NET pages
- I want to do custom handling of special keys such as the Tab key or F2 in the TextBox of a column in the DataGrid. How do I subc
- 解剖Google搜索原理 The Anatomy of a Large-Scale Hypertextual Web Search Engine
- How do I sort an array of hashes by a value in the hash?
- Under the Hood of J2EE Clustering