Jan 15, 2021
Yes, V8 uses the least significant bit to distinguish Smis from heap object pointers. That applies to all JS values, so that's why I've mentioned this special case in context of Maps/Sets.
Franziska Hinkelmann wrote a nice blog post on Smis: https://medium.com/fhinkel/v8-internals-how-small-is-a-small-integer-e0badc18b6da
They're also covered in V8 team's post on pointer compression feature: https://v8.dev/blog/pointer-compression