Content

References

Web Browser

images/web-browser-architecture-2-1024.jpg

Chrome

images/web-browser-architecture-13-1024.jpg

Firefox

images/web-browser-architecture-12-1024.jpg

Internet Explorer (pre-Edge)

images/web-browser-architecture-14-1024.jpg

Rendering Engine

images/Gecko_Overview_9.png

Blink (WebKit)

images/web-browser-architecture-23-1024.jpg

Other rendering engines

JavaScript Engine

images/implementing-a-javascript-engine-18-1024.jpg

Components of a JavaScript Engine

AST (Abstract Syntax Tree)

tree representation of the code structure

FFI (Foreign Function Interface)

translates calls between 2 languages

GC (Garbage Collector)

manages heap memory

JavaScript Engine: flow of processing

images/main-qimg-ab2a954b51c404efe66cdc7681da6b85.png

V8

V8: Interpreter

V8: Compilers

V8: Ignition pipeline

As of Dec-2016:

images/Ignition_compiler_pipeline.png

→ avoids memory overhead of the compilation

V8: Garbage Collector

The problem:

Garbage Collection:

This is similar to Java.

V8: Orinoco GC

Orinoco (since V8 5.0, Chrome 50)

Generational GC: Young/Old generations

Improved pointers tracking

Black allocation

Other JavaScript engines

That’s all folks!