Introduction
Javascript in the browser works a level above Javascript Engine (V8, Rhino, JavaScriptCore, SpiderMonkey). These engines follow the ECMAScript Standards. ECMAScript defines the standard for the scripting language. [1]
In this post, we will use V8 Engine by Google. The V8 Engine:
- The V8 Engine is written in C++ and used in Chrome & in Node.js, among others.
- It implements the ECMAScript Standard as specified in ECMA-262. [1]
More specific documentation of the V8 Engine is available at docs.
The main scheme of compilation JavaScript code to Machine Code:
Each object takes a specific size in memory and C++ or ECMAScript specify on this size.
Boolean
Size: 4 bytes or 1 byte
A boolean
is actually 1 byte
. But alignment may cause 4 bytes to be used on a 32-bit platform or 8 bytes on a 64-bit platform. This old trick comes from the observation that allocated memory takes up at least 4 or 8 bytes, and are aligned in the way that the least significant bit or three will be zero.
In C++, the size of the type boolean
is implementation-defined (expr.sizeof[p1]) and is usually equal to 1 (the size of the type char, and the smallest size a type can have), but is not required to be (expr.sizeof[fn77]): in particular, in Visual Studio up to version 4.2, it was 4. More information about C++ boolean values is available at docs[expr.sizeof(7.6.2.4)].
Resources
[1] –– https://www.ecma-international.org/publications/standards/Ecma-262.htm
Top comments (3)
Thank you Nik, really usefull article!
Why did you write this article? What problem was you solving and why was this information important for that context?
Hey Stephen! I worked on front-end applications for processing (en.wikipedia.org/wiki/Image_segmen...) high-quality & resolution images (space telescope images for example). One important thing about stable work is to use as little data (between frontend & backend) as possible. This article is part of my R&D process..