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)
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..
Thank you Nik, really usefull article!