[EN] Intepreter Optimization: Shapes and Inline Caches

Typical implementations of Javascript and other high-level languages don't store objects as hash tables. (although that is the mental model they expose to users) Instead, objects are stored as flat buffers, with a side field-to-offset table (usually called the "shape" or "dynamic type") that's shared by all the objects with the same shape. To avoid looking up the side table they also keep some…