Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8e0d9cf

Browse files
Create 17-JSEngine-ChromeV8.md
1 parent cc4a35c commit 8e0d9cf

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

‎Notes/17-JSEngine-ChromeV8.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Episode 17 : JS Engine and Google v8 architecture
2+
3+
#### JS runs literally everywhere from smart watch to robots to browsers because of Javascript Runtime Environment (JRE)
4+
5+
- JRE consists of a JS Engine (❤️ of JRE), set of APIs to connect with outside environment, event loop, Callback queue, Microtask queue etc.
6+
- JRE is a container that can run JS code.
7+
8+
- ECMAScript is a governing body of JS. It has set of rules followed by all JS engines like Chakra(Edge), Spidermonkey(Firefox), v8(Chrome)
9+
- JS Engine is **not a machine**. Its software written in low level languages (eg. C++) that takes in hi-level code in JS and spits out low level machine
10+
code
11+
12+
In all languages, code is compiled either with **interpreter** or with **compiler**. JS used to have only interpreter in old times, but now has **both**
13+
to compile JS code.
14+
15+
Interpreter : Takes code and executes line by line. Has no idea what will happen in next line. Very fast.
16+
Compiler : Code is compiled and an optimized version of same code is formed, and then executed. More efficient
17+
18+
- Code inside JSE passes through 3 steps : **Parsing, Compilation and Execution**
19+
20+
1. **Parsing** - Code is broken down into tokens. In "let a = 7" -> let, a, =, 7 are all tokens. Also we have a **syntax parser** that takes code and converts it
21+
into an **AST (Abstract Syntax Tree)** which is a JSON with all key values like type, start, end, body etc (looks like package.json but for a line of code in JS. Kinda
22+
unimportant)(Check out astexplorer.net -> converts line of code into AST)
23+
24+
2. **Compilation** - JS has something called **Just-in-time(JIT) Compilation - uses both interpreter & compiler**. Also compilation and execution both go hand in hand.
25+
The AST from previous step goes to interpreter which converts hi-level code to byte code and moves to execeution. While interpreting, compiler also works hand in hand
26+
to compile and form optimized code during runtime.
27+
28+
3. **Execution** - Needs 2 components ie. Memory heap(place where all memory is stored) and Call Stack(same call stack from prev episodes). There is also a *garbage collector.*
29+
It uses an algo called **Mark and Sweep**.
30+
31+
Companies use different JS engines and each try to make theirs the best.
32+
33+
- v8 of Google has Interpreter called *Ignition*, a compiler called *Turbo Fan* and garbage collector called *Orinoco*

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /